Section 1
//CDK (com.coreyoneil.collision.CDK)
package com.coreyoneil.collision {
import flash.display.*;
import flash.utils.*;
import flash.geom.*;
import flash.text.*;
import flash.errors.*;
public class CDK {
private var colorTransform2:ColorTransform;
private var colorTransform1:ColorTransform;
private var _returnAngleType:String;
private var pixels1:ByteArray;
private var pixels2:ByteArray;
private var bmdResample:BitmapData;
private var _returnAngle:Boolean;
private var transMatrix2:Matrix;
private var rect1:Rectangle;
private var rect2:Rectangle;
private var transMatrix1:Matrix;
protected var objectCheckArray:Array;
private var _alphaThreshold:Number;
private var item1Registration:Point;
private var bmd1:BitmapData;
private var bmd2:BitmapData;
protected var objectArray:Array;
private var item2Registration:Point;
protected var objectCollisionArray:Array;
private var _numChildren:uint;
private var colorExclusionArray:Array;
public function CDK():void{
if (getQualifiedClassName(this) == "com.coreyoneil.collision::CDK"){
throw (new Error("CDK is an abstract class and is not meant for instantiation - use CollisionGroup or CollisionList"));
};
init();
}
public function get returnAngle():Boolean{
return (_returnAngle);
}
public function set returnAngle(_arg1:Boolean):void{
_returnAngle = _arg1;
}
protected function findCollisions(_arg1, _arg2):void{
var item1xDiff:Number;
var item1yDiff:Number;
var locY:Number;
var locX:Number;
var locStage:Point;
var alpha1:uint;
var alpha2:uint;
var colorFlag:Boolean;
var red1:uint;
var red2:uint;
var green1:uint;
var green2:uint;
var blue1:uint;
var blue2:uint;
var colorObj:Object;
var aPlus:uint;
var aMinus:uint;
var rPlus:uint;
var rMinus:uint;
var gPlus:uint;
var gMinus:uint;
var bPlus:uint;
var bMinus:uint;
var item1Flags:uint;
var item2Flags:uint;
var n:uint;
var angle:Number;
var recordedCollision:Object;
var item1 = _arg1;
var item2 = _arg2;
var item1_isText:Boolean;
var item2_isText:Boolean;
if ((item1 is TextField)){
item1_isText = ((item1.antiAliasType)=="advanced") ? true : false;
item1.antiAliasType = ((item1.antiAliasType)=="advanced") ? "normal" : item1.antiAliasType;
};
if ((item2 is TextField)){
item2_isText = ((item2.antiAliasType)=="advanced") ? true : false;
item2.antiAliasType = ((item2.antiAliasType)=="advanced") ? "normal" : item2.antiAliasType;
};
colorTransform1 = item1.transform.colorTransform;
colorTransform2 = item2.transform.colorTransform;
item1Registration = new Point();
item2Registration = new Point();
item1Registration = item1.localToGlobal(item1Registration);
item2Registration = item2.localToGlobal(item2Registration);
bmd1 = new BitmapData(item1.width, item1.height, true, 0xFFFFFF);
bmd2 = new BitmapData(item1.width, item1.height, true, 0xFFFFFF);
transMatrix1 = item1.transform.matrix;
var currentObj:* = item1;
while (currentObj.parent != null) {
transMatrix1.concat(currentObj.parent.transform.matrix);
currentObj = currentObj.parent;
};
rect1 = item1.getBounds(currentObj);
if (item1 != currentObj){
rect1.x = (rect1.x + currentObj.x);
rect1.y = (rect1.y + currentObj.y);
};
var _local4 = (item1Registration.x - rect1.left);
item1xDiff = _local4;
transMatrix1.tx = _local4;
_local4 = (item1Registration.y - rect1.top);
item1yDiff = _local4;
transMatrix1.ty = _local4;
transMatrix2 = item2.transform.matrix;
currentObj = item2;
while (currentObj.parent != null) {
transMatrix2.concat(currentObj.parent.transform.matrix);
currentObj = currentObj.parent;
};
transMatrix2.tx = (item2Registration.x - rect1.left);
transMatrix2.ty = (item2Registration.y - rect1.top);
bmd1.draw(item1, transMatrix1, colorTransform1, null, null, true);
bmd2.draw(item2, transMatrix2, colorTransform2, null, null, true);
pixels1 = bmd1.getPixels(new Rectangle(0, 0, bmd1.width, bmd1.height));
pixels2 = bmd2.getPixels(new Rectangle(0, 0, bmd1.width, bmd1.height));
var k:uint;
var value1:uint;
var value2:uint;
var collisionPoint:Number = -1;
var overlap:Boolean;
var overlapping:Array = [];
var hasColors:int = colorExclusionArray.length;
pixels1.position = 0;
pixels2.position = 0;
var pixelLength:int = pixels1.length;
while (k < pixelLength) {
k = pixels1.position;
try {
value1 = pixels1.readUnsignedInt();
value2 = pixels2.readUnsignedInt();
} catch(e:EOFError) {
break;
};
alpha1 = ((value1 >> 24) & 0xFF);
alpha2 = ((value2 >> 24) & 0xFF);
if ((((alpha1 > _alphaThreshold)) && ((alpha2 > _alphaThreshold)))){
colorFlag = false;
if (hasColors){
red1 = ((value1 >> 16) & 0xFF);
red2 = ((value2 >> 16) & 0xFF);
green1 = ((value1 >> 8) & 0xFF);
green2 = ((value2 >> 8) & 0xFF);
blue1 = (value1 & 0xFF);
blue2 = (value2 & 0xFF);
n = 0;
while (n < hasColors) {
colorObj = Object(colorExclusionArray[n]);
item1Flags = 0;
item2Flags = 0;
if ((((blue1 >= colorObj.bMinus)) && ((blue1 <= colorObj.bPlus)))){
item1Flags = (item1Flags + 1);
};
if ((((blue2 >= colorObj.bMinus)) && ((blue2 <= colorObj.bPlus)))){
item2Flags = (item2Flags + 1);
};
if ((((green1 >= colorObj.gMinus)) && ((green1 <= colorObj.gPlus)))){
item1Flags = (item1Flags + 1);
};
if ((((green2 >= colorObj.gMinus)) && ((green2 <= colorObj.gPlus)))){
item2Flags = (item2Flags + 1);
};
if ((((red1 >= colorObj.rMinus)) && ((red1 <= colorObj.rPlus)))){
item1Flags = (item1Flags + 1);
};
if ((((red2 >= colorObj.rMinus)) && ((red2 <= colorObj.rPlus)))){
item2Flags = (item2Flags + 1);
};
if ((((alpha1 >= colorObj.aMinus)) && ((alpha1 <= colorObj.aPlus)))){
item1Flags = (item1Flags + 1);
};
if ((((alpha2 >= colorObj.aMinus)) && ((alpha2 <= colorObj.aPlus)))){
item2Flags = (item2Flags + 1);
};
if ((((item1Flags == 4)) || ((item2Flags == 4)))){
colorFlag = true;
};
n = (n + 1);
};
};
if (!colorFlag){
overlap = true;
collisionPoint = (k >> 2);
locY = (collisionPoint / bmd1.width);
locX = (collisionPoint % bmd1.width);
locY = (locY - item1yDiff);
locX = (locX - item1xDiff);
locStage = item1.localToGlobal(new Point(locX, locY));
overlapping.push(locStage);
};
};
};
if (overlap){
angle = (_returnAngle) ? findAngle(item1, item2) : 0;
recordedCollision = {object1:item1, object2:item2, angle:angle, overlapping:overlapping};
objectCollisionArray.push(recordedCollision);
};
if (item1_isText){
item1.antiAliasType = "advanced";
};
if (item2_isText){
item2.antiAliasType = "advanced";
};
_local4 = false;
item2_isText = _local4;
item1_isText = _local4;
}
private function init():void{
objectCheckArray = [];
objectCollisionArray = [];
objectArray = [];
colorExclusionArray = [];
_alphaThreshold = 0;
_returnAngle = true;
_returnAngleType = "RADIANS";
}
public function dispose():void{
objectArray = [];
}
public function excludeColor(_arg1:uint, _arg2:uint=0xFF, _arg3:uint=20, _arg4:uint=20, _arg5:uint=20):void{
var _local8:uint;
var _local9:uint;
var _local10:uint;
var _local11:uint;
var _local12:uint;
var _local13:uint;
var _local14:uint;
var _local15:uint;
var _local6:int = colorExclusionArray.length;
var _local7:uint;
while (_local7 < _local6) {
if (colorExclusionArray[_local7].color == _arg1){
throw (new Error((("Color could not be added - color already in the exclusion list [" + _arg1) + "]")));
};
_local7++;
};
_local8 = (((_arg1 >> 24) & 0xFF) + _arg2);
_local9 = (_local8 - (_arg2 << 1));
_local10 = (((_arg1 >> 16) & 0xFF) + _arg3);
_local11 = (_local10 - (_arg3 << 1));
_local12 = (((_arg1 >> 8) & 0xFF) + _arg4);
_local13 = (_local12 - (_arg4 << 1));
_local14 = ((_arg1 & 0xFF) + _arg5);
_local15 = (_local14 - (_arg5 << 1));
var _local16:Object = {color:_arg1, aPlus:_local8, aMinus:_local9, rPlus:_local10, rMinus:_local11, gPlus:_local12, gMinus:_local13, bPlus:_local14, bMinus:_local15};
colorExclusionArray.push(_local16);
}
public function get numChildren():uint{
return (objectArray.length);
}
public function get alphaThreshold():Number{
return (_alphaThreshold);
}
public function removeItem(_arg1):void{
var _local2:int = objectArray.indexOf(_arg1);
if (_local2 > -1){
objectArray.splice(_local2, 1);
} else {
throw (new Error((_arg1 + " could not be removed - object not found in item list.")));
};
}
public function set returnAngleType(_arg1:String):void{
_arg1 = _arg1.toUpperCase();
switch (_arg1){
case "DEGREES":
case "DEGREE":
case "DEG":
case "DEGS":
_returnAngleType = "DEGREES";
break;
case "RADIANS":
case "RADIAN":
case "RAD":
case "RADS":
_returnAngleType = "RADIANS";
break;
default:
throw (new Error("returnAngleType expects 'DEGREES' or 'RADIANS'"));
};
}
private function findAngle(_arg1:DisplayObject, _arg2:DisplayObject):Number{
var pixel:uint;
var thisAlpha:uint;
var lastAlpha:int;
var edgePoint:int;
var k:uint;
var upperLimit:int;
var colorFlag:Boolean;
var red1:uint;
var green1:uint;
var blue1:uint;
var colorObj:Object;
var a:uint;
var r:uint;
var g:uint;
var b:uint;
var item1Flags:uint;
var n:uint;
var item1 = _arg1;
var item2 = _arg2;
var center:Point = new Point((item1.width >> 1), (item1.height >> 1));
var pixels:ByteArray = pixels2;
transMatrix2.tx = (transMatrix2.tx + center.x);
transMatrix2.ty = (transMatrix2.ty + center.y);
bmdResample = new BitmapData((item1.width << 1), (item1.height << 1), true, 0xFFFFFF);
bmdResample.draw(item2, transMatrix2, colorTransform2, null, null, true);
pixels = bmdResample.getPixels(new Rectangle(0, 0, bmdResample.width, bmdResample.height));
center.x = (bmdResample.width >> 1);
center.y = (bmdResample.height >> 1);
var columnHeight:uint = Math.round(bmdResample.height);
var rowWidth:uint = Math.round(bmdResample.width);
var edgeArray:Array = [];
var hasColors:int = colorExclusionArray.length;
var j:uint;
while (j < columnHeight) {
k = ((j * rowWidth) << 2);
pixels.position = k;
lastAlpha = -1;
upperLimit = (((j + 1) * rowWidth) << 2);
while (k < upperLimit) {
k = pixels.position;
try {
pixel = pixels.readUnsignedInt();
} catch(e:EOFError) {
break;
};
thisAlpha = ((pixel >> 24) & 0xFF);
if (lastAlpha == -1){
lastAlpha = thisAlpha;
} else {
if (thisAlpha > _alphaThreshold){
colorFlag = false;
if (hasColors){
red1 = ((pixel >> 16) & 0xFF);
green1 = ((pixel >> 8) & 0xFF);
blue1 = (pixel & 0xFF);
n = 0;
while (n < hasColors) {
colorObj = Object(colorExclusionArray[n]);
item1Flags = 0;
if ((((blue1 >= colorObj.bMinus)) && ((blue1 <= colorObj.bPlus)))){
item1Flags = (item1Flags + 1);
};
if ((((green1 >= colorObj.gMinus)) && ((green1 <= colorObj.gPlus)))){
item1Flags = (item1Flags + 1);
};
if ((((red1 >= colorObj.rMinus)) && ((red1 <= colorObj.rPlus)))){
item1Flags = (item1Flags + 1);
};
if ((((thisAlpha >= colorObj.aMinus)) && ((thisAlpha <= colorObj.aPlus)))){
item1Flags = (item1Flags + 1);
};
if (item1Flags == 4){
colorFlag = true;
};
n = (n + 1);
};
};
if (!colorFlag){
edgeArray.push((k >> 2));
};
};
};
};
j = (j + 1);
};
var numEdges:int = edgeArray.length;
var slopeYAvg:Number = 0;
var slopeXAvg:Number = 0;
j = 0;
while (j < numEdges) {
edgePoint = int(edgeArray[j]);
slopeYAvg = (slopeYAvg + (center.y - (edgePoint / rowWidth)));
slopeXAvg = (slopeXAvg + ((edgePoint % rowWidth) - center.x));
j = (j + 1);
};
var average:Number = -(Math.atan2(slopeYAvg, slopeXAvg));
average = ((_returnAngleType == "RADIANS")) ? average : (average * 57.2957795);
return (average);
}
public function addItem(_arg1):void{
if ((_arg1 is DisplayObject)){
objectArray.push(_arg1);
} else {
throw (new Error((("Cannot add item: " + _arg1) + " - item must be a Display Object.")));
};
}
public function get returnAngleType():String{
return (_returnAngleType);
}
public function set alphaThreshold(_arg1:Number):void{
if ((((_arg1 <= 1)) && ((_arg1 >= 0)))){
_alphaThreshold = (_arg1 * 0xFF);
} else {
throw (new Error("alphaThreshold expects a value from 0 to 1"));
};
}
public function removeExcludeColor(_arg1:uint):void{
var _local2:Boolean;
var _local3:int = colorExclusionArray.length;
var _local4:uint;
while (_local4 < _local3) {
if (colorExclusionArray[_local4].color == _arg1){
colorExclusionArray.splice(_local4, 1);
_local2 = true;
break;
};
_local4++;
};
if (!_local2){
throw (new Error((("Color could not be removed - color not found in exclusion list [" + _arg1) + "]")));
};
}
protected function clearArrays():void{
objectCheckArray = [];
objectCollisionArray = [];
}
}
}//package com.coreyoneil.collision
Section 2
//CollisionList (com.coreyoneil.collision.CollisionList)
package com.coreyoneil.collision {
import flash.display.*;
public class CollisionList extends CDK {
public function CollisionList(_arg1, ... _args):void{
addItem(_arg1);
var _local3:uint;
while (_local3 < _args.length) {
addItem(_args[_local3]);
_local3++;
};
}
public function checkCollisions():Array{
var _local3:DisplayObject;
clearArrays();
var _local1:uint = objectArray.length;
var _local2:* = DisplayObject(objectArray[0]);
var _local4:uint = 1;
while (_local4 < _local1) {
_local3 = DisplayObject(objectArray[_local4]);
if (_local2.hitTestObject(_local3)){
if ((_local3.width * _local3.height) > (_local2.width * _local2.height)){
objectCheckArray.push([_local2, _local3]);
} else {
objectCheckArray.push([_local3, _local2]);
};
};
_local4++;
};
_local1 = objectCheckArray.length;
_local4 = 0;
while (_local4 < _local1) {
findCollisions(DisplayObject(objectCheckArray[_local4][0]), DisplayObject(objectCheckArray[_local4][1]));
_local4++;
};
return (objectCollisionArray);
}
public function swapTarget(_arg1):void{
if ((_arg1 is DisplayObject)){
objectArray[0] = _arg1;
} else {
throw (new Error((("Cannot swap target: " + _arg1) + " - item must be a Display Object.")));
};
}
override public function removeItem(_arg1):void{
var _local2:int = objectArray.indexOf(_arg1);
if (_local2 > 0){
objectArray.splice(_local2, 1);
} else {
if (_local2 == 0){
throw (new Error("You cannot remove the target from CollisionList. Use swapTarget to change the target."));
};
throw (new Error((_arg1 + " could not be removed - object not found in item list.")));
};
}
}
}//package com.coreyoneil.collision
Section 3
//PropTween (gs.core.tween.PropTween)
package gs.core.tween {
public class PropTween {
public var priority:int;
public var start:Number;
public var prevNode:PropTween;
public var change:Number;
public var target:Object;
public var name:String;
public var property:String;
public var nextNode:PropTween;
public var isPlugin:Boolean;
public function PropTween(_arg1:Object, _arg2:String, _arg3:Number, _arg4:Number, _arg5:String, _arg6:Boolean, _arg7:PropTween=null, _arg8:int=0){
this.target = _arg1;
this.property = _arg2;
this.start = _arg3;
this.change = _arg4;
this.name = _arg5;
this.isPlugin = _arg6;
this.nextNode = _arg7;
this.priority = _arg8;
}
}
}//package gs.core.tween
Section 4
//SimpleTimeline (gs.core.tween.SimpleTimeline)
package gs.core.tween {
public class SimpleTimeline extends Tweenable {
public var autoRemoveChildren:Boolean;
protected var _lastChild:Tweenable;
protected var _firstChild:Tweenable;
public function SimpleTimeline(_arg1:Object=null){
super(0, _arg1);
}
override public function renderTime(_arg1:Number, _arg2:Boolean=false, _arg3:Boolean=false):void{
var _local5:Number;
var _local6:Tweenable;
var _local4:Tweenable = _firstChild;
this.cachedTotalTime = _arg1;
this.cachedTime = _arg1;
while (_local4) {
_local6 = _local4.nextNode;
if (((_local4.active) || ((((_arg1 >= _local4.startTime)) && (!(_local4.cachedPaused)))))){
if (!_local4.cachedReversed){
_local4.renderTime(((_arg1 - _local4.startTime) * _local4.cachedTimeScale), _arg2, false);
} else {
_local5 = (_local4.cacheIsDirty) ? _local4.totalDuration : _local4.cachedTotalDuration;
_local4.renderTime((_local5 - ((_arg1 - _local4.startTime) * _local4.cachedTimeScale)), _arg2, false);
};
};
_local4 = _local6;
};
}
public function addChild(_arg1:Tweenable):void{
if (((!((_arg1.timeline == null))) && (!(_arg1.gc)))){
_arg1.timeline.remove(_arg1, true);
};
_arg1.timeline = this;
if (_arg1.gc){
_arg1.setEnabled(true, true);
};
if (_firstChild != null){
_firstChild.prevNode = _arg1;
_arg1.nextNode = _firstChild;
} else {
_arg1.nextNode = null;
};
_firstChild = _arg1;
_arg1.prevNode = null;
}
public function remove(_arg1:Tweenable, _arg2:Boolean=false):void{
if (((!(_arg1.gc)) && (!(_arg2)))){
_arg1.setEnabled(false, true);
};
if (_arg1.nextNode != null){
_arg1.nextNode.prevNode = _arg1.prevNode;
} else {
if (_lastChild == _arg1){
_lastChild = _arg1.prevNode;
};
};
if (_arg1.prevNode != null){
_arg1.prevNode.nextNode = _arg1.nextNode;
} else {
if (_firstChild == _arg1){
_firstChild = _arg1.nextNode;
};
};
_arg1.nextNode = (_arg1.prevNode = null);
}
public function get rawTime():Number{
return (this.cachedTotalTime);
}
}
}//package gs.core.tween
Section 5
//Tweenable (gs.core.tween.Tweenable)
package gs.core.tween {
import gs.*;
public class Tweenable {
public var timeline:SimpleTimeline;
public var initted:Boolean;
protected var _hasUpdate:Boolean;
public var active:Boolean;
public var cachedTimeScale:Number;
protected var _delay:Number;
public var startTime:Number;
public var cachedReversed:Boolean;
public var nextNode:Tweenable;
public var cachedTime:Number;
public var gc:Boolean;
public var cachedDuration:Number;
public var prevNode:Tweenable;
public var cacheIsDirty:Boolean;
protected var _rawPrevTime:Number;// = -1
public var vars:Object;
public var cachedTotalTime:Number;
public var cachedPaused:Boolean;
public var cachedTotalDuration:Number;
public var data;
public static const version:Number = 0.8;
protected static var _classInitted:Boolean;
public function Tweenable(_arg1:Number=0, _arg2:Object=null){
this.vars = ((_arg2) || ({}));
this.cachedDuration = (this.cachedTotalDuration = ((_arg1) || (0)));
_delay = ((this.vars.delay) || (0));
this.cachedTimeScale = ((this.vars.timeScale) || (1));
this.active = Boolean((((((_arg1 == 0)) && ((_delay == 0)))) && (!((this.vars.immediateRender == false)))));
this.cachedTotalTime = (this.cachedTime = 0);
this.data = this.vars.data;
if (!_classInitted){
if (isNaN(TweenLite.rootFrame)){
TweenLite.initClass();
_classInitted = true;
} else {
return;
};
};
var _local3:SimpleTimeline = ((this.vars.timeline is SimpleTimeline)) ? this.vars.timeline : (this.vars.useFrames) ? TweenLite.rootFramesTimeline : TweenLite.rootTimeline;
this.startTime = (_local3.cachedTotalTime + _delay);
_local3.addChild(this);
}
public function complete(_arg1:Boolean=false, _arg2:Boolean=false):void{
}
public function get totalDuration():Number{
return (this.cachedTotalDuration);
}
public function get delay():Number{
return (_delay);
}
public function get duration():Number{
return (this.cachedDuration);
}
public function set delay(_arg1:Number):void{
this.startTime = (this.startTime + (_arg1 - _delay));
_delay = _arg1;
}
public function set totalDuration(_arg1:Number):void{
this.duration = _arg1;
}
public function set duration(_arg1:Number):void{
this.cachedDuration = (this.cachedTotalDuration = _arg1);
}
public function renderTime(_arg1:Number, _arg2:Boolean=false, _arg3:Boolean=false):void{
}
public function setEnabled(_arg1:Boolean, _arg2:Boolean=false):void{
if (_arg1 == this.gc){
this.gc = !(_arg1);
if (_arg1){
this.active = Boolean(((((!(this.cachedPaused)) && ((this.cachedTotalTime > 0)))) && ((this.cachedTotalTime < this.cachedTotalDuration))));
if (!_arg2){
this.timeline.addChild(this);
};
} else {
this.active = false;
if (!_arg2){
this.timeline.remove(this);
};
};
};
}
}
}//package gs.core.tween
Section 6
//TweenEvent (gs.events.TweenEvent)
package gs.events {
import flash.events.*;
public class TweenEvent extends Event {
public static const COMPLETE:String = "complete";
public static const START:String = "init";
public static const UPDATE:String = "change";
public static const REVERSE_COMPLETE:String = "reverseComplete";
public static const VERSION:Number = 1;
public static const REPEAT:String = "repeat";
public function TweenEvent(_arg1:String, _arg2:Boolean=false, _arg3:Boolean=false){
super(_arg1, _arg2, _arg3);
}
override public function clone():Event{
return (new TweenEvent(this.type, this.bubbles, this.cancelable));
}
}
}//package gs.events
Section 7
//AutoAlphaPlugin (gs.plugins.AutoAlphaPlugin)
package gs.plugins {
import flash.display.*;
import gs.*;
public class AutoAlphaPlugin extends VisiblePlugin {
protected var _ignoreVisible:Boolean;
public static const VERSION:Number = 2.1;
public static const API:Number = 1;
public function AutoAlphaPlugin(){
this.propName = "autoAlpha";
this.overwriteProps = ["alpha", "visible"];
}
override public function killProps(_arg1:Object):void{
super.killProps(_arg1);
_ignoreVisible = Boolean(("visible" in _arg1));
}
override public function onInitTween(_arg1:Object, _arg2, _arg3:TweenLite):Boolean{
init(_arg1, Boolean(!((_arg2 == 0))), _arg3);
addTween(_arg1, "alpha", _arg1.alpha, _arg2, "alpha");
return (true);
}
override public function set changeFactor(_arg1:Number):void{
updateTweens(_arg1);
if (!_ignoreVisible){
_target.visible = Boolean(!((_target.alpha == 0)));
};
}
}
}//package gs.plugins
Section 8
//BevelFilterPlugin (gs.plugins.BevelFilterPlugin)
package gs.plugins {
import flash.display.*;
import gs.*;
import flash.filters.*;
public class BevelFilterPlugin extends FilterPlugin {
public static const VERSION:Number = 1;
public static const API:Number = 1;
public function BevelFilterPlugin(){
this.propName = "bevelFilter";
this.overwriteProps = ["bevelFilter"];
}
override public function onInitTween(_arg1:Object, _arg2, _arg3:TweenLite):Boolean{
_target = _arg1;
_type = BevelFilter;
initFilter(_arg2, new BevelFilter(0, 0, 0xFFFFFF, 0.5, 0, 0.5, 2, 2, 0, ((_arg2.quality) || (2))));
return (true);
}
}
}//package gs.plugins
Section 9
//BezierPlugin (gs.plugins.BezierPlugin)
package gs.plugins {
import gs.core.tween.*;
import gs.*;
public class BezierPlugin extends TweenPlugin {
protected var _future:Object;
protected var _orient:Boolean;
protected var _orientData:Array;
protected var _target:Object;
protected var _beziers:Object;
protected static const _RAD2DEG:Number = 57.2957795130823;
public static const VERSION:Number = 2.1;
public static const API:Number = 1;
public function BezierPlugin(){
_future = {};
super();
this.propName = "bezier";
this.overwriteProps = [];
}
override public function killProps(_arg1:Object):void{
var _local2:String;
for (_local2 in _beziers) {
if ((_local2 in _arg1)){
delete _beziers[_local2];
};
};
super.killProps(_arg1);
}
protected function init(_arg1:TweenLite, _arg2:Array, _arg3:Boolean):void{
var _local6:int;
var _local7:String;
var _local8:Object;
_target = _arg1.target;
var _local4:Object = ((_arg1.vars.isTV)==true) ? _arg1.vars.exposedVars : _arg1.vars;
if (_local4.orientToBezier == true){
_orientData = [["x", "y", "rotation", 0, 0.01]];
_orient = true;
} else {
if ((_local4.orientToBezier is Array)){
_orientData = _local4.orientToBezier;
_orient = true;
};
};
var _local5:Object = {};
_local6 = 0;
while (_local6 < _arg2.length) {
for (_local7 in _arg2[_local6]) {
if (_local5[_local7] == undefined){
_local5[_local7] = [_arg1.target[_local7]];
};
if (typeof(_arg2[_local6][_local7]) == "number"){
_local5[_local7].push(_arg2[_local6][_local7]);
} else {
_local5[_local7].push((_arg1.target[_local7] + Number(_arg2[_local6][_local7])));
};
};
_local6++;
};
for (_local7 in _local5) {
this.overwriteProps[this.overwriteProps.length] = _local7;
if (_local4[_local7] != undefined){
if (typeof(_local4[_local7]) == "number"){
_local5[_local7].push(_local4[_local7]);
} else {
_local5[_local7].push((_arg1.target[_local7] + Number(_local4[_local7])));
};
_local8 = {};
_local8[_local7] = true;
_arg1.killVars(_local8, false);
delete _local4[_local7];
};
};
_beziers = parseBeziers(_local5, _arg3);
}
override public function onInitTween(_arg1:Object, _arg2, _arg3:TweenLite):Boolean{
if (!(_arg2 is Array)){
return (false);
};
init(_arg3, (_arg2 as Array), false);
return (true);
}
override public function set changeFactor(_arg1:Number):void{
var _local2:int;
var _local3:String;
var _local4:Object;
var _local5:Number;
var _local6:uint;
var _local7:Number;
var _local8:int;
var _local9:Object;
var _local10:Number;
var _local11:Number;
var _local12:Array;
var _local13:Number;
var _local14:Object;
var _local15:Boolean;
if (_arg1 == 1){
for (_local3 in _beziers) {
_local2 = (_beziers[_local3].length - 1);
_target[_local3] = _beziers[_local3][_local2][2];
};
} else {
for (_local3 in _beziers) {
_local6 = _beziers[_local3].length;
if (_arg1 < 0){
_local2 = 0;
} else {
if (_arg1 >= 1){
_local2 = (_local6 - 1);
} else {
_local2 = int((_local6 * _arg1));
};
};
_local5 = ((_arg1 - (_local2 * (1 / _local6))) * _local6);
_local4 = _beziers[_local3][_local2];
if (this.round){
_local7 = (_local4[0] + (_local5 * (((2 * (1 - _local5)) * (_local4[1] - _local4[0])) + (_local5 * (_local4[2] - _local4[0])))));
_local8 = ((_local7)<0) ? -1 : 1;
_target[_local3] = ((((_local7 % 1) * _local8))>0.5) ? (int(_local7) + _local8) : int(_local7);
} else {
_target[_local3] = (_local4[0] + (_local5 * (((2 * (1 - _local5)) * (_local4[1] - _local4[0])) + (_local5 * (_local4[2] - _local4[0])))));
};
};
};
if (_orient){
_local2 = _orientData.length;
_local9 = {};
while (_local2-- > 0) {
_local12 = _orientData[_local2];
_local9[_local12[0]] = _target[_local12[0]];
_local9[_local12[1]] = _target[_local12[1]];
};
_local14 = _target;
_local15 = this.round;
_target = _future;
this.round = false;
_orient = false;
_local2 = _orientData.length;
while (_local2-- > 0) {
_local12 = _orientData[_local2];
this.changeFactor = (_arg1 + ((_local12[4]) || (0.01)));
_local13 = ((_local12[3]) || (0));
_local10 = (_future[_local12[0]] - _local9[_local12[0]]);
_local11 = (_future[_local12[1]] - _local9[_local12[1]]);
_local14[_local12[2]] = ((Math.atan2(_local11, _local10) * _RAD2DEG) + _local13);
};
_target = _local14;
this.round = _local15;
_orient = true;
};
}
public static function parseBeziers(_arg1:Object, _arg2:Boolean=false):Object{
var _local3:int;
var _local4:Array;
var _local5:Object;
var _local6:String;
var _local7:Object = {};
if (_arg2){
for (_local6 in _arg1) {
_local4 = _arg1[_local6];
_local5 = [];
_local7[_local6] = _local5;
if (_local4.length > 2){
_local5[_local5.length] = [_local4[0], (_local4[1] - ((_local4[2] - _local4[0]) / 4)), _local4[1]];
_local3 = 1;
while (_local3 < (_local4.length - 1)) {
_local5[_local5.length] = [_local4[_local3], (_local4[_local3] + (_local4[_local3] - _local5[(_local3 - 1)][1])), _local4[(_local3 + 1)]];
_local3++;
};
} else {
_local5[_local5.length] = [_local4[0], ((_local4[0] + _local4[1]) / 2), _local4[1]];
};
};
} else {
for (_local6 in _arg1) {
_local4 = _arg1[_local6];
_local5 = [];
_local7[_local6] = _local5;
if (_local4.length > 3){
_local5[_local5.length] = [_local4[0], _local4[1], ((_local4[1] + _local4[2]) / 2)];
_local3 = 2;
while (_local3 < (_local4.length - 2)) {
_local5[_local5.length] = [_local5[(_local3 - 2)][2], _local4[_local3], ((_local4[_local3] + _local4[(_local3 + 1)]) / 2)];
_local3++;
};
_local5[_local5.length] = [_local5[(_local5.length - 1)][2], _local4[(_local4.length - 2)], _local4[(_local4.length - 1)]];
} else {
if (_local4.length == 3){
_local5[_local5.length] = [_local4[0], _local4[1], _local4[2]];
} else {
if (_local4.length == 2){
_local5[_local5.length] = [_local4[0], ((_local4[0] + _local4[1]) / 2), _local4[1]];
};
};
};
};
};
return (_local7);
}
}
}//package gs.plugins
Section 10
//BezierThroughPlugin (gs.plugins.BezierThroughPlugin)
package gs.plugins {
import gs.*;
public class BezierThroughPlugin extends BezierPlugin {
public static const VERSION:Number = 1.1;
public static const API:Number = 1;
public function BezierThroughPlugin(){
this.propName = "bezierThrough";
}
override public function onInitTween(_arg1:Object, _arg2, _arg3:TweenLite):Boolean{
if (!(_arg2 is Array)){
return (false);
};
init(_arg3, (_arg2 as Array), true);
return (true);
}
}
}//package gs.plugins
Section 11
//BlurFilterPlugin (gs.plugins.BlurFilterPlugin)
package gs.plugins {
import flash.display.*;
import gs.*;
import flash.filters.*;
public class BlurFilterPlugin extends FilterPlugin {
public static const VERSION:Number = 1;
public static const API:Number = 1;
public function BlurFilterPlugin(){
this.propName = "blurFilter";
this.overwriteProps = ["blurFilter"];
}
override public function onInitTween(_arg1:Object, _arg2, _arg3:TweenLite):Boolean{
_target = _arg1;
_type = BlurFilter;
initFilter(_arg2, new BlurFilter(0, 0, ((_arg2.quality) || (2))));
return (true);
}
}
}//package gs.plugins
Section 12
//ColorMatrixFilterPlugin (gs.plugins.ColorMatrixFilterPlugin)
package gs.plugins {
import flash.display.*;
import gs.*;
import flash.filters.*;
public class ColorMatrixFilterPlugin extends FilterPlugin {
protected var _matrix:Array;
protected var _matrixTween:EndArrayPlugin;
public static const API:Number = 1;
public static const VERSION:Number = 1.1;
protected static var _lumG:Number = 0.71516;
protected static var _lumR:Number = 0.212671;
protected static var _idMatrix:Array = [1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0];
protected static var _lumB:Number = 0.072169;
public function ColorMatrixFilterPlugin(){
this.propName = "colorMatrixFilter";
this.overwriteProps = ["colorMatrixFilter"];
}
override public function onInitTween(_arg1:Object, _arg2, _arg3:TweenLite):Boolean{
_target = _arg1;
_type = ColorMatrixFilter;
var _local4:Object = _arg2;
initFilter({remove:_arg2.remove, index:_arg2.index, addFilter:_arg2.addFilter}, new ColorMatrixFilter(_idMatrix.slice()));
_matrix = ColorMatrixFilter(_filter).matrix;
var _local5:Array = [];
if (((!((_local4.matrix == null))) && ((_local4.matrix is Array)))){
_local5 = _local4.matrix;
} else {
if (_local4.relative == true){
_local5 = _matrix.slice();
} else {
_local5 = _idMatrix.slice();
};
_local5 = setBrightness(_local5, _local4.brightness);
_local5 = setContrast(_local5, _local4.contrast);
_local5 = setHue(_local5, _local4.hue);
_local5 = setSaturation(_local5, _local4.saturation);
_local5 = setThreshold(_local5, _local4.threshold);
if (!isNaN(_local4.colorize)){
_local5 = colorize(_local5, _local4.colorize, _local4.amount);
};
};
_matrixTween = new EndArrayPlugin();
_matrixTween.init(_matrix, _local5);
return (true);
}
override public function set changeFactor(_arg1:Number):void{
_matrixTween.changeFactor = _arg1;
ColorMatrixFilter(_filter).matrix = _matrix;
super.changeFactor = _arg1;
}
public static function setSaturation(_arg1:Array, _arg2:Number):Array{
if (isNaN(_arg2)){
return (_arg1);
};
var _local3:Number = (1 - _arg2);
var _local4:Number = (_local3 * _lumR);
var _local5:Number = (_local3 * _lumG);
var _local6:Number = (_local3 * _lumB);
var _local7:Array = [(_local4 + _arg2), _local5, _local6, 0, 0, _local4, (_local5 + _arg2), _local6, 0, 0, _local4, _local5, (_local6 + _arg2), 0, 0, 0, 0, 0, 1, 0];
return (applyMatrix(_local7, _arg1));
}
public static function setHue(_arg1:Array, _arg2:Number):Array{
if (isNaN(_arg2)){
return (_arg1);
};
_arg2 = (_arg2 * (Math.PI / 180));
var _local3:Number = Math.cos(_arg2);
var _local4:Number = Math.sin(_arg2);
var _local5:Array = [((_lumR + (_local3 * (1 - _lumR))) + (_local4 * -(_lumR))), ((_lumG + (_local3 * -(_lumG))) + (_local4 * -(_lumG))), ((_lumB + (_local3 * -(_lumB))) + (_local4 * (1 - _lumB))), 0, 0, ((_lumR + (_local3 * -(_lumR))) + (_local4 * 0.143)), ((_lumG + (_local3 * (1 - _lumG))) + (_local4 * 0.14)), ((_lumB + (_local3 * -(_lumB))) + (_local4 * -0.283)), 0, 0, ((_lumR + (_local3 * -(_lumR))) + (_local4 * -((1 - _lumR)))), ((_lumG + (_local3 * -(_lumG))) + (_local4 * _lumG)), ((_lumB + (_local3 * (1 - _lumB))) + (_local4 * _lumB)), 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1];
return (applyMatrix(_local5, _arg1));
}
public static function setThreshold(_arg1:Array, _arg2:Number):Array{
if (isNaN(_arg2)){
return (_arg1);
};
var _local3:Array = [(_lumR * 0x0100), (_lumG * 0x0100), (_lumB * 0x0100), 0, (-256 * _arg2), (_lumR * 0x0100), (_lumG * 0x0100), (_lumB * 0x0100), 0, (-256 * _arg2), (_lumR * 0x0100), (_lumG * 0x0100), (_lumB * 0x0100), 0, (-256 * _arg2), 0, 0, 0, 1, 0];
return (applyMatrix(_local3, _arg1));
}
public static function applyMatrix(_arg1:Array, _arg2:Array):Array{
var _local6:int;
var _local7:int;
if (((!((_arg1 is Array))) || (!((_arg2 is Array))))){
return (_arg2);
};
var _local3:Array = [];
var _local4:int;
var _local5:int;
_local6 = 0;
while (_local6 < 4) {
_local7 = 0;
while (_local7 < 5) {
if (_local7 == 4){
_local5 = _arg1[(_local4 + 4)];
} else {
_local5 = 0;
};
_local3[(_local4 + _local7)] = (((((_arg1[_local4] * _arg2[_local7]) + (_arg1[(_local4 + 1)] * _arg2[(_local7 + 5)])) + (_arg1[(_local4 + 2)] * _arg2[(_local7 + 10)])) + (_arg1[(_local4 + 3)] * _arg2[(_local7 + 15)])) + _local5);
_local7++;
};
_local4 = (_local4 + 5);
_local6++;
};
return (_local3);
}
public static function colorize(_arg1:Array, _arg2:Number, _arg3:Number=1):Array{
if (isNaN(_arg2)){
return (_arg1);
};
if (isNaN(_arg3)){
_arg3 = 1;
};
var _local4:Number = (((_arg2 >> 16) & 0xFF) / 0xFF);
var _local5:Number = (((_arg2 >> 8) & 0xFF) / 0xFF);
var _local6:Number = ((_arg2 & 0xFF) / 0xFF);
var _local7:Number = (1 - _arg3);
var _local8:Array = [(_local7 + ((_arg3 * _local4) * _lumR)), ((_arg3 * _local4) * _lumG), ((_arg3 * _local4) * _lumB), 0, 0, ((_arg3 * _local5) * _lumR), (_local7 + ((_arg3 * _local5) * _lumG)), ((_arg3 * _local5) * _lumB), 0, 0, ((_arg3 * _local6) * _lumR), ((_arg3 * _local6) * _lumG), (_local7 + ((_arg3 * _local6) * _lumB)), 0, 0, 0, 0, 0, 1, 0];
return (applyMatrix(_local8, _arg1));
}
public static function setBrightness(_arg1:Array, _arg2:Number):Array{
if (isNaN(_arg2)){
return (_arg1);
};
_arg2 = ((_arg2 * 100) - 100);
return (applyMatrix([1, 0, 0, 0, _arg2, 0, 1, 0, 0, _arg2, 0, 0, 1, 0, _arg2, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1], _arg1));
}
public static function setContrast(_arg1:Array, _arg2:Number):Array{
if (isNaN(_arg2)){
return (_arg1);
};
_arg2 = (_arg2 + 0.01);
var _local3:Array = [_arg2, 0, 0, 0, (128 * (1 - _arg2)), 0, _arg2, 0, 0, (128 * (1 - _arg2)), 0, 0, _arg2, 0, (128 * (1 - _arg2)), 0, 0, 0, 1, 0];
return (applyMatrix(_local3, _arg1));
}
}
}//package gs.plugins
Section 13
//DropShadowFilterPlugin (gs.plugins.DropShadowFilterPlugin)
package gs.plugins {
import flash.display.*;
import gs.*;
import flash.filters.*;
public class DropShadowFilterPlugin extends FilterPlugin {
public static const VERSION:Number = 1;
public static const API:Number = 1;
public function DropShadowFilterPlugin(){
this.propName = "dropShadowFilter";
this.overwriteProps = ["dropShadowFilter"];
}
override public function onInitTween(_arg1:Object, _arg2, _arg3:TweenLite):Boolean{
_target = _arg1;
_type = DropShadowFilter;
initFilter(_arg2, new DropShadowFilter(0, 45, 0, 0, 0, 0, 1, ((_arg2.quality) || (2)), _arg2.inner, _arg2.knockout, _arg2.hideObject));
return (true);
}
}
}//package gs.plugins
Section 14
//EndArrayPlugin (gs.plugins.EndArrayPlugin)
package gs.plugins {
import flash.display.*;
import gs.*;
public class EndArrayPlugin extends TweenPlugin {
protected var _a:Array;
protected var _info:Array;
public static const VERSION:Number = 1.5;
public static const API:Number = 1;
public function EndArrayPlugin(){
_info = [];
super();
this.propName = "endArray";
this.overwriteProps = ["endArray"];
}
public function init(_arg1:Array, _arg2:Array):void{
_a = _arg1;
var _local3:int = (_arg2.length - 1);
while (_local3 > -1) {
if (((!((_arg1[_local3] == _arg2[_local3]))) && (!((_arg1[_local3] == null))))){
_info[_info.length] = new ArrayTweenInfo(_local3, _a[_local3], (_arg2[_local3] - _a[_local3]));
};
_local3--;
};
}
override public function onInitTween(_arg1:Object, _arg2, _arg3:TweenLite):Boolean{
if (((!((_arg1 is Array))) || (!((_arg2 is Array))))){
return (false);
};
init((_arg1 as Array), _arg2);
return (true);
}
override public function set changeFactor(_arg1:Number):void{
var _local2:int;
var _local3:ArrayTweenInfo;
var _local4:Number;
var _local5:int;
if (this.round){
_local2 = (_info.length - 1);
while (_local2 > -1) {
_local3 = _info[_local2];
_local4 = (_local3.start + (_local3.change * _arg1));
_local5 = ((_local4)<0) ? -1 : 1;
_a[_local3.index] = ((((_local4 % 1) * _local5))>0.5) ? (int(_local4) + _local5) : int(_local4);
_local2--;
};
} else {
_local2 = (_info.length - 1);
while (_local2 > -1) {
_local3 = _info[_local2];
_a[_local3.index] = (_local3.start + (_local3.change * _arg1));
_local2--;
};
};
}
}
}//package gs.plugins
class ArrayTweenInfo {
public var change:Number;
public var start:Number;
public var index:uint;
private function ArrayTweenInfo(_arg1:uint, _arg2:Number, _arg3:Number){
this.index = _arg1;
this.start = _arg2;
this.change = _arg3;
}
}
Section 15
//FilterPlugin (gs.plugins.FilterPlugin)
package gs.plugins {
import flash.display.*;
import gs.core.tween.*;
import gs.*;
import flash.filters.*;
public class FilterPlugin extends TweenPlugin {
protected var _remove:Boolean;
protected var _target:Object;
protected var _index:int;
protected var _filter:BitmapFilter;
protected var _type:Class;
public static const VERSION:Number = 1.03;
public static const API:Number = 1;
public function onCompleteTween():void{
var _local1:int;
var _local2:Array;
if (_remove){
_local2 = _target.filters;
if (!(_local2[_index] is _type)){
_local1 = (_local2.length - 1);
while (_local1 > -1) {
if ((_local2[_local1] is _type)){
_local2.splice(_local1, 1);
break;
};
_local1--;
};
} else {
_local2.splice(_index, 1);
};
_target.filters = _local2;
};
}
protected function initFilter(_arg1:Object, _arg2:BitmapFilter):void{
var _local4:String;
var _local5:int;
var _local6:HexColorsPlugin;
var _local3:Array = _target.filters;
_index = -1;
if (_arg1.index != null){
_index = _arg1.index;
} else {
_local5 = (_local3.length - 1);
while (_local5 > -1) {
if ((_local3[_local5] is _type)){
_index = _local5;
break;
};
_local5--;
};
};
if ((((((_index == -1)) || ((_local3[_index] == null)))) || ((_arg1.addFilter == true)))){
_index = ((_arg1.index)!=null) ? _arg1.index : _local3.length;
_local3[_index] = _arg2;
_target.filters = _local3;
};
_filter = _local3[_index];
_remove = Boolean((_arg1.remove == true));
if (_remove){
this.onComplete = onCompleteTween;
};
var _local7:Object = ((_arg1.isTV)==true) ? _arg1.exposedVars : _arg1;
for (_local4 in _local7) {
if (((((((((!((_local4 in _filter))) || ((_filter[_local4] == _local7[_local4])))) || ((_local4 == "remove")))) || ((_local4 == "index")))) || ((_local4 == "addFilter")))){
} else {
if ((((((_local4 == "color")) || ((_local4 == "highlightColor")))) || ((_local4 == "shadowColor")))){
_local6 = new HexColorsPlugin();
_local6.initColor(_filter, _local4, _filter[_local4], _local7[_local4]);
_tweens[_tweens.length] = new PropTween(_local6, "changeFactor", 0, 1, _local4, false);
} else {
if ((((((((_local4 == "quality")) || ((_local4 == "inner")))) || ((_local4 == "knockout")))) || ((_local4 == "hideObject")))){
_filter[_local4] = _local7[_local4];
} else {
addTween(_filter, _local4, _filter[_local4], _local7[_local4], _local4);
};
};
};
};
}
override public function set changeFactor(_arg1:Number):void{
var _local2:int;
var _local3:PropTween;
var _local4:Array = _target.filters;
_local2 = (_tweens.length - 1);
while (_local2 > -1) {
_local3 = _tweens[_local2];
_local3.target[_local3.property] = (_local3.start + (_local3.change * _arg1));
_local2--;
};
if (!(_local4[_index] is _type)){
_index = (_local4.length - 1);
_local2 = (_local4.length - 1);
while (_local2 > -1) {
if ((_local4[_local2] is _type)){
_index = _local2;
break;
};
_local2--;
};
};
_local4[_index] = _filter;
_target.filters = _local4;
}
}
}//package gs.plugins
Section 16
//FramePlugin (gs.plugins.FramePlugin)
package gs.plugins {
import flash.display.*;
import gs.*;
public class FramePlugin extends TweenPlugin {
protected var _target:MovieClip;
public var frame:int;
public static const VERSION:Number = 1.01;
public static const API:Number = 1;
public function FramePlugin(){
this.propName = "frame";
this.overwriteProps = ["frame", "frameLabel"];
this.round = true;
}
override public function onInitTween(_arg1:Object, _arg2, _arg3:TweenLite):Boolean{
if (((!((_arg1 is MovieClip))) || (isNaN(_arg2)))){
return (false);
};
_target = (_arg1 as MovieClip);
this.frame = _target.currentFrame;
addTween(this, "frame", this.frame, _arg2, "frame");
return (true);
}
override public function set changeFactor(_arg1:Number):void{
updateTweens(_arg1);
_target.gotoAndStop(this.frame);
}
}
}//package gs.plugins
Section 17
//GlowFilterPlugin (gs.plugins.GlowFilterPlugin)
package gs.plugins {
import flash.display.*;
import gs.*;
import flash.filters.*;
public class GlowFilterPlugin extends FilterPlugin {
public static const VERSION:Number = 1;
public static const API:Number = 1;
public function GlowFilterPlugin(){
this.propName = "glowFilter";
this.overwriteProps = ["glowFilter"];
}
override public function onInitTween(_arg1:Object, _arg2, _arg3:TweenLite):Boolean{
_target = _arg1;
_type = GlowFilter;
initFilter(_arg2, new GlowFilter(0xFFFFFF, 0, 0, 0, ((_arg2.strength) || (1)), ((_arg2.quality) || (2)), _arg2.inner, _arg2.knockout));
return (true);
}
}
}//package gs.plugins
Section 18
//HexColorsPlugin (gs.plugins.HexColorsPlugin)
package gs.plugins {
import flash.display.*;
import gs.*;
public class HexColorsPlugin extends TweenPlugin {
protected var _colors:Array;
public static const VERSION:Number = 1.01;
public static const API:Number = 1;
public function HexColorsPlugin(){
this.propName = "hexColors";
this.overwriteProps = [];
_colors = [];
}
override public function killProps(_arg1:Object):void{
var _local2:int = (_colors.length - 1);
while (_local2 > -1) {
if (_arg1[_colors[_local2][1]] != undefined){
_colors.splice(_local2, 1);
};
_local2--;
};
super.killProps(_arg1);
}
public function initColor(_arg1:Object, _arg2:String, _arg3:uint, _arg4:uint):void{
var _local5:Number;
var _local6:Number;
var _local7:Number;
if (_arg3 != _arg4){
_local5 = (_arg3 >> 16);
_local6 = ((_arg3 >> 8) & 0xFF);
_local7 = (_arg3 & 0xFF);
_colors[_colors.length] = [_arg1, _arg2, _local5, ((_arg4 >> 16) - _local5), _local6, (((_arg4 >> 8) & 0xFF) - _local6), _local7, ((_arg4 & 0xFF) - _local7)];
this.overwriteProps[this.overwriteProps.length] = _arg2;
};
}
override public function set changeFactor(_arg1:Number):void{
var _local2:int;
var _local3:Array;
_local2 = (_colors.length - 1);
while (_local2 > -1) {
_local3 = _colors[_local2];
_local3[0][_local3[1]] = ((((_local3[2] + (_arg1 * _local3[3])) << 16) | ((_local3[4] + (_arg1 * _local3[5])) << 8)) | (_local3[6] + (_arg1 * _local3[7])));
_local2--;
};
}
override public function onInitTween(_arg1:Object, _arg2, _arg3:TweenLite):Boolean{
var _local4:String;
for (_local4 in _arg2) {
initColor(_arg1, _local4, uint(_arg1[_local4]), uint(_arg2[_local4]));
};
return (true);
}
}
}//package gs.plugins
Section 19
//RemoveTintPlugin (gs.plugins.RemoveTintPlugin)
package gs.plugins {
import flash.display.*;
import gs.*;
public class RemoveTintPlugin extends TintPlugin {
public static const VERSION:Number = 1.01;
public static const API:Number = 1;
public function RemoveTintPlugin(){
this.propName = "removeTint";
}
}
}//package gs.plugins
Section 20
//RoundPropsPlugin (gs.plugins.RoundPropsPlugin)
package gs.plugins {
import flash.display.*;
import gs.*;
public class RoundPropsPlugin extends TweenPlugin {
public static const VERSION:Number = 1;
public static const API:Number = 1;
public function RoundPropsPlugin(){
this.propName = "roundProps";
this.overwriteProps = [];
this.round = true;
}
public function add(_arg1:Object, _arg2:String, _arg3:Number, _arg4:Number):void{
addTween(_arg1, _arg2, _arg3, (_arg3 + _arg4), _arg2);
this.overwriteProps[this.overwriteProps.length] = _arg2;
}
}
}//package gs.plugins
Section 21
//ShortRotationPlugin (gs.plugins.ShortRotationPlugin)
package gs.plugins {
import flash.display.*;
import gs.*;
public class ShortRotationPlugin extends TweenPlugin {
public static const VERSION:Number = 1;
public static const API:Number = 1;
public function ShortRotationPlugin(){
this.propName = "shortRotation";
this.overwriteProps = [];
}
override public function onInitTween(_arg1:Object, _arg2, _arg3:TweenLite):Boolean{
var _local4:String;
if (typeof(_arg2) == "number"){
return (false);
};
for (_local4 in _arg2) {
initRotation(_arg1, _local4, _arg1[_local4], _arg2[_local4]);
};
return (true);
}
public function initRotation(_arg1:Object, _arg2:String, _arg3:Number, _arg4:Number):void{
var _local5:Number = ((_arg4 - _arg3) % 360);
if (((_arg4 - _arg3) % 360) != (_local5 % 180)){
_local5 = ((_local5)<0) ? (_local5 + 360) : (_local5 - 360);
};
addTween(_arg1, _arg2, _arg3, (_arg3 + _local5), _arg2);
this.overwriteProps[this.overwriteProps.length] = _arg2;
}
}
}//package gs.plugins
Section 22
//TintPlugin (gs.plugins.TintPlugin)
package gs.plugins {
import flash.display.*;
import gs.core.tween.*;
import gs.*;
import flash.geom.*;
public class TintPlugin extends TweenPlugin {
protected var _ct:ColorTransform;
protected var _transform:Transform;
protected var _ignoreAlpha:Boolean;
public static const VERSION:Number = 1.1;
public static const API:Number = 1;
protected static var _props:Array = ["redMultiplier", "greenMultiplier", "blueMultiplier", "alphaMultiplier", "redOffset", "greenOffset", "blueOffset", "alphaOffset"];
public function TintPlugin(){
this.propName = "tint";
this.overwriteProps = ["tint"];
}
override public function onInitTween(_arg1:Object, _arg2, _arg3:TweenLite):Boolean{
if (!(_arg1 is DisplayObject)){
return (false);
};
var _local4:ColorTransform = new ColorTransform();
if (((!((_arg2 == null))) && (!((_arg3.vars.removeTint == true))))){
_local4.color = uint(_arg2);
};
_ignoreAlpha = true;
init((_arg1 as DisplayObject), _local4);
return (true);
}
override public function set changeFactor(_arg1:Number):void{
var _local2:ColorTransform;
updateTweens(_arg1);
if (_ignoreAlpha){
_local2 = _transform.colorTransform;
_ct.alphaMultiplier = _local2.alphaMultiplier;
_ct.alphaOffset = _local2.alphaOffset;
};
_transform.colorTransform = _ct;
}
public function init(_arg1:DisplayObject, _arg2:ColorTransform):void{
var _local4:String;
_transform = _arg1.transform;
_ct = _transform.colorTransform;
var _local3:int = _props.length;
while (_local3-- > 0) {
_local4 = _props[_local3];
if (_ct[_local4] != _arg2[_local4]){
_tweens[_tweens.length] = new PropTween(_ct, _local4, _ct[_local4], (_arg2[_local4] - _ct[_local4]), "tint", false);
};
};
}
}
}//package gs.plugins
Section 23
//TweenPlugin (gs.plugins.TweenPlugin)
package gs.plugins {
import gs.core.tween.*;
import gs.*;
public class TweenPlugin {
public var onEnable:Function;
public var priority:int;// = 0
public var overwriteProps:Array;
protected var _tweens:Array;
public var onDisable:Function;
public var propName:String;
public var round:Boolean;
public var onComplete:Function;
protected var _changeFactor:Number;// = 0
public static const VERSION:Number = 1.1;
public static const API:Number = 1;
public function TweenPlugin(){
_tweens = [];
super();
}
protected function updateTweens(_arg1:Number):void{
var _local2:int;
var _local3:PropTween;
var _local4:Number;
var _local5:int;
if (this.round){
_local2 = (_tweens.length - 1);
while (_local2 > -1) {
_local3 = _tweens[_local2];
_local4 = (_local3.start + (_local3.change * _arg1));
_local5 = ((_local4)<0) ? -1 : 1;
_local3.target[_local3.property] = ((((_local4 % 1) * _local5))>0.5) ? (int(_local4) + _local5) : int(_local4);
_local2--;
};
} else {
_local2 = (_tweens.length - 1);
while (_local2 > -1) {
_local3 = _tweens[_local2];
_local3.target[_local3.property] = (_local3.start + (_local3.change * _arg1));
_local2--;
};
};
}
public function get changeFactor():Number{
return (_changeFactor);
}
public function set changeFactor(_arg1:Number):void{
updateTweens(_arg1);
_changeFactor = _arg1;
}
protected function addTween(_arg1:Object, _arg2:String, _arg3:Number, _arg4, _arg5:String=null):void{
var _local6:Number;
if (_arg4 != null){
_local6 = ((typeof(_arg4))=="number") ? (_arg4 - _arg3) : Number(_arg4);
if (_local6 != 0){
_tweens[_tweens.length] = new PropTween(_arg1, _arg2, _arg3, _local6, ((_arg5) || (_arg2)), false);
};
};
}
public function killProps(_arg1:Object):void{
var _local2:int;
_local2 = (this.overwriteProps.length - 1);
while (_local2 > -1) {
if ((this.overwriteProps[_local2] in _arg1)){
this.overwriteProps.splice(_local2, 1);
};
_local2--;
};
_local2 = (_tweens.length - 1);
while (_local2 > -1) {
if ((_tweens[_local2].name in _arg1)){
_tweens.splice(_local2, 1);
};
_local2--;
};
}
public function onInitTween(_arg1:Object, _arg2, _arg3:TweenLite):Boolean{
addTween(_arg1, this.propName, _arg1[this.propName], _arg2, this.propName);
return (true);
}
public static function activate(_arg1:Array):Boolean{
var _local2:int;
var _local3:Object;
TweenLite.onPluginEvent = TweenPlugin.onTweenEvent;
_local2 = (_arg1.length - 1);
while (_local2 > -1) {
if (_arg1[_local2].hasOwnProperty("API")){
_local3 = new (_arg1[_local2]);
TweenLite.plugins[_local3.propName] = _arg1[_local2];
};
_local2--;
};
return (true);
}
private static function onTweenEvent(_arg1:String, _arg2:PropTween):PropTween{
var _local4:Array;
var _local5:int;
var _local3:PropTween = _arg2;
if (_arg1 == "onInit"){
_local4 = [];
while (_local3 != null) {
_local4[_local4.length] = _local3;
_local3 = _local3.nextNode;
};
_local4.sortOn("priority", (Array.NUMERIC | Array.DESCENDING));
_local5 = _local4.length;
while (_local5-- > 0) {
_local4[_local5].nextNode = _local4[(_local5 + 1)];
_local4[_local5].prevNode = _local4[(_local5 - 1)];
};
_local3 = _local4[0];
} else {
while (_local3 != null) {
if (((_local3.isPlugin) && (!((_local3.target[_arg1] == null))))){
var _local6 = _local3.target;
_local6[_arg1]();
};
_local3 = _local3.nextNode;
};
};
return (_local3);
}
}
}//package gs.plugins
Section 24
//VisiblePlugin (gs.plugins.VisiblePlugin)
package gs.plugins {
import flash.display.*;
import gs.*;
public class VisiblePlugin extends TweenPlugin {
protected var _tween:TweenLite;
protected var _hideAtStart:Boolean;
protected var _target:Object;
protected var _visible:Boolean;
public static const VERSION:Number = 1.53;
public static const API:Number = 1;
public function VisiblePlugin(){
this.propName = "visible";
this.overwriteProps = ["visible"];
this.onComplete = onCompleteTween;
}
public function onCompleteTween():void{
if (((!(_hideAtStart)) && (((!((_tween.cachedTime == 0))) || ((_tween.duration == 0)))))){
_target.visible = _visible;
};
}
protected function init(_arg1:Object, _arg2:Boolean, _arg3:TweenLite):void{
_target = _arg1;
_tween = _arg3;
_visible = _arg2;
if ((((((_tween.vars.runBackwards == true)) && ((_tween.vars.immediateRender == true)))) && ((_arg2 == false)))){
_hideAtStart = true;
};
}
override public function onInitTween(_arg1:Object, _arg2, _arg3:TweenLite):Boolean{
init(_arg1, Boolean(_arg2), _arg3);
return (true);
}
override public function set changeFactor(_arg1:Number):void{
if (((_hideAtStart) && ((_tween.cachedTotalTime == 0)))){
_target.visible = false;
} else {
if (_target.visible != true){
_target.visible = true;
};
};
}
}
}//package gs.plugins
Section 25
//VolumePlugin (gs.plugins.VolumePlugin)
package gs.plugins {
import flash.display.*;
import gs.*;
import flash.media.*;
public class VolumePlugin extends TweenPlugin {
protected var _target:Object;
protected var _st:SoundTransform;
public static const VERSION:Number = 1.01;
public static const API:Number = 1;
public function VolumePlugin(){
this.propName = "volume";
this.overwriteProps = ["volume"];
}
override public function onInitTween(_arg1:Object, _arg2, _arg3:TweenLite):Boolean{
if (((isNaN(_arg2)) || (!(_arg1.hasOwnProperty("soundTransform"))))){
return (false);
};
_target = _arg1;
_st = _target.soundTransform;
addTween(_st, "volume", _st.volume, _arg2, "volume");
return (true);
}
override public function set changeFactor(_arg1:Number):void{
updateTweens(_arg1);
_target.soundTransform = _st;
}
}
}//package gs.plugins
Section 26
//OverwriteManager (gs.OverwriteManager)
package gs {
import flash.utils.*;
import gs.core.tween.*;
import flash.errors.*;
public class OverwriteManager {
public static const ALL:int = 1;
public static const NONE:int = 0;
public static const AUTO:int = 2;
public static const CONCURRENT:int = 3;
public static const version:Number = 5.03;
public static var mode:int;
public static var enabled:Boolean;
public static function manageOverwrites(_arg1:TweenLite, _arg2:Object, _arg3:Array):void{
var _local9:int;
var _local10:TweenLite;
var _local11:Number;
var _local12:Number;
var _local13:Tweenable;
var _local14:Number;
var _local15:SimpleTimeline;
var _local4:Object = _arg1.vars;
var _local5:int = ((_local4.overwrite)==undefined) ? mode : int(_local4.overwrite);
if ((((_local5 < 2)) || ((_arg3 == null)))){
return;
};
var _local6:Number = _arg1.startTime;
var _local7:Array = [];
var _local8:Array = [];
_local9 = (_arg3.length - 1);
while (_local9 > -1) {
_local10 = _arg3[_local9];
if ((((_local10 == _arg1)) || (_local10.gc))){
} else {
if (_local10.timeline != _arg1.timeline){
_local8[_local8.length] = _local10;
} else {
if ((((((_local10.startTime <= _local6)) && (((_local10.startTime + _local10.totalDuration) > _local6)))) && (!(getGlobalPaused(_local10))))){
_local7[_local7.length] = _local10;
};
};
};
_local9--;
};
if (_local8.length != 0){
_local11 = _arg1.cachedTimeScale;
_local12 = _local6;
_local15 = _arg1.timeline;
while (_local15 != null) {
_local11 = (_local11 * _local15.cachedTimeScale);
_local12 = (_local12 + _local15.startTime);
_local15 = _local15.timeline;
};
_local6 = (_local11 * _local12);
_local9 = (_local8.length - 1);
while (_local9 > -1) {
_local13 = _local8[_local9];
_local11 = _local13.cachedTimeScale;
_local12 = _local13.startTime;
_local15 = _local13.timeline;
while (_local15 != null) {
_local11 = (_local11 * _local15.cachedTimeScale);
_local12 = (_local12 + _local15.startTime);
_local15 = _local15.timeline;
};
_local14 = (_local11 * _local12);
if ((((_local14 <= _local6)) && (((((_local14 + (_local13.totalDuration * _local11)) > _local6)) || ((_local13.cachedDuration == 0)))))){
_local7[_local7.length] = _local13;
};
_local9--;
};
};
if (_local7.length == 0){
return;
};
if (_local5 == AUTO){
_local9 = (_local7.length - 1);
while (_local9 > -1) {
_local7[_local9].killVars(_arg2);
_local9--;
};
} else {
_local9 = (_local7.length - 1);
while (_local9 > -1) {
_local7[_local9].enabled = false;
_local9--;
};
};
}
public static function init(_arg1:int=2):int{
if (TweenLite.version < 11.099){
};
TweenLite.overwriteManager = OverwriteManager;
mode = _arg1;
enabled = true;
return (mode);
}
public static function getGlobalPaused(_arg1:Tweenable):Boolean{
var _local2:Tweenable = _arg1;
while (_local2 != null) {
if (_local2.cachedPaused){
return (true);
};
_local2 = _local2.timeline;
};
return (false);
}
}
}//package gs
Section 27
//TweenLite (gs.TweenLite)
package gs {
import flash.display.*;
import flash.events.*;
import flash.utils.*;
import gs.core.tween.*;
import gs.plugins.*;
public class TweenLite extends Tweenable {
protected var _hasPlugins:Boolean;
public var propTweenLookup:Object;
protected var _overwrittenProps:Object;
public var target:Object;
protected var _notifyPluginsOfEnabled:Boolean;
public var ease:Function;
protected var _firstPropTween:PropTween;
public static const version:Number = 11.0991;
public static var rootTimeline:SimpleTimeline;
public static var onPluginEvent:Function;
public static var rootFramesTimeline:SimpleTimeline;
public static var defaultEase:Function = TweenLite.easeOut;
public static var plugins:Object = {};
public static var masterList:Dictionary = new Dictionary(false);
public static var overwriteManager:Object;
public static var rootFrame:Number;
public static var killDelayedCallsTo:Function = TweenLite.killTweensOf;
private static var _shape:Shape = new Shape();
protected static var _reservedProps:Object = {ease:1, delay:1, overwrite:1, onComplete:1, onCompleteParams:1, useFrames:1, runBackwards:1, startAt:1, onUpdate:1, onUpdateParams:1, roundProps:1, onStart:1, onStartParams:1, onReverseComplete:1, onReverseCompleteParams:1, onRepeat:1, onRepeatParams:1, proxiedEase:1, easeParams:1, yoyo:1, onCompleteListener:1, onUpdateListener:1, onStartListener:1, orientToBezier:1, timeScale:1, immediateRender:1, repeat:1, repeatDelay:1, timeline:1, data:1, paused:1};
public function TweenLite(_arg1:Object, _arg2:Number, _arg3:Object){
var _local4:int;
var _local5:Array;
var _local6:TweenLite;
super(_arg2, _arg3);
this.ease = ((typeof(this.vars.ease))!="function") ? defaultEase : this.vars.ease;
this.target = _arg1;
if (this.vars.easeParams != null){
this.vars.proxiedEase = this.ease;
this.ease = easeProxy;
};
propTweenLookup = {};
if (!(_arg1 in masterList)){
masterList[_arg1] = [this];
} else {
_local4 = ((((_arg3.overwrite == undefined)) || (((!(overwriteManager.enabled)) && ((_arg3.overwrite > 1)))))) ? overwriteManager.mode : int(_arg3.overwrite);
if (_local4 == 1){
_local5 = masterList[_arg1];
for each (_local6 in _local5) {
if (!_local6.gc){
_local6.setEnabled(false, false);
};
};
masterList[_arg1] = [this];
} else {
masterList[_arg1].push(this);
};
};
if (((this.active) || (this.vars.immediateRender))){
renderTime(0, false, true);
};
}
protected function easeProxy(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):Number{
return (this.vars.proxiedEase.apply(null, arguments.concat(this.vars.easeParams)));
}
override public function renderTime(_arg1:Number, _arg2:Boolean=false, _arg3:Boolean=false):void{
var _local4:Number;
var _local5:Boolean;
var _local6:Number = this.cachedTime;
this.active = true;
if (_arg1 >= this.cachedDuration){
this.cachedTotalTime = (this.cachedTime = this.cachedDuration);
_local4 = 1;
_local5 = true;
if (this.cachedDuration == 0){
if ((((((_arg1 == 0)) || ((_rawPrevTime < 0)))) && (!((_rawPrevTime == _arg1))))){
_arg3 = true;
};
_rawPrevTime = _arg1;
};
} else {
if (_arg1 <= 0){
_local4 = 0;
this.cachedTotalTime = (this.cachedTime = _local4);
if (_arg1 < 0){
this.active = false;
if (this.cachedDuration == 0){
if (_rawPrevTime > 0){
_arg3 = true;
_local5 = true;
};
_rawPrevTime = _arg1;
};
};
} else {
this.cachedTotalTime = (this.cachedTime = _arg1);
_local4 = this.ease(_arg1, 0, 1, this.cachedDuration);
};
};
if ((((this.cachedTime == _local6)) && (!(_arg3)))){
return;
};
if (!this.initted){
init();
};
if ((((((_local6 == 0)) && (!((this.vars.onStart == null))))) && (!(_arg2)))){
this.vars.onStart.apply(null, this.vars.onStartParams);
};
var _local7:PropTween = _firstPropTween;
while (_local7) {
_local7.target[_local7.property] = (_local7.start + (_local4 * _local7.change));
_local7 = _local7.nextNode;
};
if (((_hasUpdate) && (!(_arg2)))){
this.vars.onUpdate.apply(null, this.vars.onUpdateParams);
};
if (_local5){
complete(true, _arg2);
};
}
protected function removePropTween(_arg1:PropTween):void{
if (((_arg1.isPlugin) && (!((_arg1.target.onDisable == null))))){
_arg1.target.onDisable();
};
if (_arg1.nextNode != null){
_arg1.nextNode.prevNode = _arg1.prevNode;
};
if (_arg1.prevNode != null){
_arg1.prevNode.nextNode = _arg1.nextNode;
} else {
if (_firstPropTween == _arg1){
_firstPropTween = _arg1.nextNode;
};
};
}
protected function insertPropTween(_arg1:Object, _arg2:String, _arg3:Number, _arg4, _arg5:String, _arg6:Boolean, _arg7:PropTween):PropTween{
var _local9:Array;
var _local10:int;
var _local8:PropTween = new PropTween(_arg1, _arg2, _arg3, ((typeof(_arg4))=="number") ? (_arg4 - _arg3) : Number(_arg4), _arg5, _arg6, _arg7);
if (_arg7 != null){
_arg7.prevNode = _local8;
};
if (((_arg6) && ((_arg5 == "_MULTIPLE_")))){
_local9 = _arg1.overwriteProps;
_local10 = _local9.length;
while (_local10-- > 0) {
propTweenLookup[_local9[_local10]] = _local8;
};
} else {
propTweenLookup[_arg5] = _local8;
};
return (_local8);
}
protected function init():void{
var _local1:String;
var _local2:int;
var _local3:*;
var _local4:Boolean;
var _local6:PropTween;
var _local5:Object = ((this.vars.isTV)==true) ? this.vars.exposedVars : this.vars;
propTweenLookup = {};
if (((!((_local5.timeScale == undefined))) && ((this.target is Tweenable)))){
_firstPropTween = insertPropTween(this.target, "timeScale", this.target.timeScale, _local5.timeScale, "timeScale", false, _firstPropTween);
};
for (_local1 in _local5) {
if ((_local1 in _reservedProps)){
} else {
if ((_local1 in plugins)){
_local3 = new (plugins[_local1]);
if (_local3.onInitTween(this.target, _local5[_local1], this) == false){
_firstPropTween = insertPropTween(this.target, _local1, this.target[_local1], _local5[_local1], _local1, false, _firstPropTween);
} else {
_firstPropTween = insertPropTween(_local3, "changeFactor", 0, 1, ((_local3.overwriteProps.length)==1) ? _local3.overwriteProps[0] : "_MULTIPLE_", true, _firstPropTween);
_hasPlugins = true;
if (_local3.priority != 0){
_firstPropTween.priority = _local3.priority;
_local4 = true;
};
if (((!((_local3.onDisable == null))) || (!((_local3.onEnable == null))))){
_notifyPluginsOfEnabled = true;
};
};
} else {
_firstPropTween = insertPropTween(this.target, _local1, this.target[_local1], _local5[_local1], _local1, false, _firstPropTween);
};
};
};
if (_local4){
_firstPropTween = onPluginEvent("onInit", _firstPropTween);
};
if (this.vars.runBackwards == true){
_local6 = _firstPropTween;
while (_local6) {
_local6.start = (_local6.start + _local6.change);
_local6.change = -(_local6.change);
_local6 = _local6.nextNode;
};
};
_hasUpdate = Boolean(!((this.vars.onUpdate == null)));
if (_overwrittenProps != null){
killVars(_overwrittenProps);
};
if (((((((TweenLite.overwriteManager.enabled) && (!((_firstPropTween == null))))) && ((TweenLite.overwriteManager.mode > 1)))) && ((this.target in masterList)))){
overwriteManager.manageOverwrites(this, propTweenLookup, masterList[this.target]);
};
this.initted = true;
}
override public function complete(_arg1:Boolean=false, _arg2:Boolean=false):void{
if (!_arg1){
renderTime(this.cachedTotalDuration, _arg2, false);
return;
};
if (_hasPlugins){
onPluginEvent("onComplete", _firstPropTween);
};
if (this.timeline.autoRemoveChildren){
this.setEnabled(false, false);
} else {
this.active = false;
};
if (((((!((this.vars.onComplete == null))) && (((!((this.cachedTotalTime == 0))) || ((this.cachedDuration == 0)))))) && (!(_arg2)))){
this.vars.onComplete.apply(null, this.vars.onCompleteParams);
};
}
public function killVars(_arg1:Object, _arg2:Boolean=true):void{
var _local3:String;
var _local4:PropTween;
if (_overwrittenProps == null){
_overwrittenProps = {};
};
for (_local3 in _arg1) {
if ((_local3 in propTweenLookup)){
_local4 = propTweenLookup[_local3];
if (((_local4.isPlugin) && ((_local4.name == "_MULTIPLE_")))){
_local4.target.killProps(_arg1);
if (_local4.target.overwriteProps.length == 0){
removePropTween(_local4);
delete propTweenLookup[_local3];
};
} else {
removePropTween(_local4);
delete propTweenLookup[_local3];
};
};
if (_arg2){
_overwrittenProps[_local3] = 1;
};
};
}
override public function setEnabled(_arg1:Boolean, _arg2:Boolean=false):void{
if (_arg1 == this.gc){
if (_arg1){
if (!(this.target in TweenLite.masterList)){
TweenLite.masterList[this.target] = [this];
} else {
TweenLite.masterList[this.target].push(this);
};
};
super.setEnabled(_arg1, _arg2);
if (_notifyPluginsOfEnabled){
onPluginEvent((_arg1) ? "onEnable" : "onDisable", _firstPropTween);
};
};
}
public static function removeTween(_arg1:TweenLite):void{
if (_arg1 != null){
_arg1.setEnabled(false, false);
};
}
public static function initClass():void{
rootFrame = 0;
rootTimeline = new SimpleTimeline(null);
rootFramesTimeline = new SimpleTimeline(null);
rootTimeline.startTime = (getTimer() * 0.001);
rootFramesTimeline.startTime = rootFrame;
rootTimeline.autoRemoveChildren = true;
rootFramesTimeline.autoRemoveChildren = true;
_shape.addEventListener(Event.ENTER_FRAME, updateAll, false, 0, true);
if (overwriteManager == null){
overwriteManager = {mode:1, enabled:false};
};
}
public static function killTweensOf(_arg1:Object, _arg2:Boolean=false):void{
var _local3:Array;
var _local4:int;
if ((_arg1 in masterList)){
_local3 = masterList[_arg1];
_local4 = _local3.length;
while (_local4-- > 0) {
if (!_local3[_local4].gc){
if (_arg2){
_local3[_local4].complete(false, false);
} else {
_local3[_local4].setEnabled(false, false);
};
};
};
delete masterList[_arg1];
};
}
public static function from(_arg1:Object, _arg2:Number, _arg3:Object):TweenLite{
_arg3.runBackwards = true;
if (_arg3.immediateRender != false){
_arg3.immediateRender = true;
};
return (new TweenLite(_arg1, _arg2, _arg3));
}
protected static function easeOut(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):Number{
_arg1 = (_arg1 / _arg4);
return ((((-(_arg3) * _arg1) * (_arg1 - 2)) + _arg2));
}
public static function delayedCall(_arg1:Number, _arg2:Function, _arg3:Array=null, _arg4:Boolean=false):TweenLite{
return (new TweenLite(_arg2, 0, {delay:_arg1, onComplete:_arg2, onCompleteParams:_arg3, immediateRender:false, useFrames:_arg4, overwrite:0}));
}
protected static function updateAll(_arg1:Event=null):void{
var _local2:Dictionary;
var _local3:Object;
var _local4:Array;
var _local5:int;
rootTimeline.renderTime((((getTimer() * 0.001) - rootTimeline.startTime) * rootTimeline.cachedTimeScale), false, false);
rootFrame++;
rootFramesTimeline.renderTime(((rootFrame - rootFramesTimeline.startTime) * rootFramesTimeline.cachedTimeScale), false, false);
if (!(rootFrame % 60)){
_local2 = masterList;
for (_local3 in _local2) {
_local4 = _local2[_local3];
_local5 = _local4.length;
while (_local5-- > 0) {
if (_local4[_local5].gc){
_local4.splice(_local5, 1);
};
};
if (_local4.length == 0){
delete _local2[_local3];
};
};
};
}
public static function to(_arg1:Object, _arg2:Number, _arg3:Object):TweenLite{
return (new TweenLite(_arg1, _arg2, _arg3));
}
}
}//package gs
Section 28
//TweenMax (gs.TweenMax)
package gs {
import flash.display.*;
import flash.events.*;
import flash.utils.*;
import gs.core.tween.*;
import gs.plugins.*;
import gs.events.*;
public class TweenMax extends TweenLite implements IEventDispatcher {
public var yoyo:Boolean;
protected var _repeat:int;// = 0
protected var _cyclesComplete:uint;// = 0
protected var _dispatcher:EventDispatcher;
protected var _hasUpdateListener:Boolean;
protected var _pauseTime:Number;
protected var _repeatDelay:Number;// = 0
public static const version:Number = 11.0994;
public static var removeTween:Function = TweenLite.removeTween;
private static var _overwriteMode:int = (OverwriteManager.enabled) ? OverwriteManager.mode : OverwriteManager.init();
;
public static var killTweensOf:Function = TweenLite.killTweensOf;
public static var killDelayedCallsTo:Function = TweenLite.killTweensOf;
private static var _activatedPlugins:Boolean = TweenPlugin.activate([AutoAlphaPlugin, EndArrayPlugin, FramePlugin, RemoveTintPlugin, TintPlugin, VisiblePlugin, VolumePlugin, BevelFilterPlugin, BezierPlugin, BezierThroughPlugin, BlurFilterPlugin, ColorMatrixFilterPlugin, DropShadowFilterPlugin, GlowFilterPlugin, HexColorsPlugin, RoundPropsPlugin, ShortRotationPlugin, {}]);
public function TweenMax(_arg1:Object, _arg2:Number, _arg3:Object){
super(_arg1, _arg2, _arg3);
if (TweenLite.version < 11.0991){
throw (new Error("TweenMax error! Please update your TweenLite class or try deleting your ASO files. TweenMax requires a more recent version. Download updates at http://www.TweenMax.com."));
};
if ((((typeof(this.vars.yoyo) == "number")) || (!((this.vars.loop == undefined))))){
throw (new Error("WARNING: Your tween uses the old 'yoyo' or 'loop' syntax which has been deprecated in favor of the new, more flexible 'repeat' and 'yoyo' usage. See http://www.TweenMax.com for details."));
};
_cyclesComplete = 0;
this.yoyo = Boolean(this.vars.yoyo);
_repeat = ((this.vars.repeat) || (0));
_repeatDelay = ((this.vars.repeatDelay) || (0));
this.cacheIsDirty = true;
if (((((((((!((this.vars.onCompleteListener == null))) || (!((this.vars.onUpdateListener == null))))) || (!((this.vars.onStartListener == null))))) || (!((this.vars.onRepeatListener == null))))) || (!((this.vars.onReverseCompleteListener == null))))){
initDispatcher();
if ((((_arg2 == 0)) && ((this.delay == 0)))){
_dispatcher.dispatchEvent(new TweenEvent(TweenEvent.UPDATE));
_dispatcher.dispatchEvent(new TweenEvent(TweenEvent.COMPLETE));
};
};
if (this.vars.reversed == true){
this.cachedReversed = true;
};
if (this.vars.paused == true){
this.paused = true;
};
if (((!((this.vars.timeScale == undefined))) && (!((this.target is Tweenable))))){
this.cachedTimeScale = this.vars.timeScale;
};
}
public function stop():void{
this.paused = true;
}
override public function renderTime(_arg1:Number, _arg2:Boolean=false, _arg3:Boolean=false):void{
var _local6:Boolean;
var _local7:Number;
var _local8:Boolean;
var _local10:Number;
if (((!(this.active)) && (!(this.cachedPaused)))){
this.active = true;
};
var _local4:Number = (this.cacheIsDirty) ? this.totalDuration : this.cachedTotalDuration;
var _local5:Number = this.cachedTime;
if (_arg1 >= _local4){
this.cachedTotalTime = _local4;
this.cachedTime = this.cachedDuration;
_local7 = 1;
_local6 = true;
if (this.cachedDuration == 0){
if ((((((_arg1 == 0)) || ((_rawPrevTime < 0)))) && (!((_rawPrevTime == _arg1))))){
_arg3 = true;
};
_rawPrevTime = _arg1;
};
} else {
if (_arg1 <= 0){
if (_arg1 < 0){
this.active = false;
if (this.cachedDuration == 0){
if (_rawPrevTime > 0){
_arg3 = true;
_local6 = true;
};
_rawPrevTime = _arg1;
};
};
_local7 = 0;
this.cachedTotalTime = (this.cachedTime = _local7);
if (((this.cachedReversed) && (!((_local5 == 0))))){
_local6 = true;
};
} else {
this.cachedTotalTime = (this.cachedTime = _arg1);
if (_repeat == 0){
_local7 = this.ease(this.cachedTime, 0, 1, this.cachedDuration);
};
};
};
if (_repeat != 0){
_local10 = (this.cachedDuration + _repeatDelay);
if (_arg1 > 0){
this.cachedTime = (((((this.yoyo) && ((((this.cachedTotalTime / _local10) % 2) >= 1)))) || (((!(this.yoyo)) && (!(((this.cachedTotalTime / _local10) % 1))))))) ? (this.cachedDuration - (this.cachedTotalTime % _local10)) : (this.cachedTotalTime % _local10);
if (this.cachedTime >= this.cachedDuration){
this.cachedTime = this.cachedDuration;
_local7 = 1;
} else {
if (this.cachedTime <= 0){
_local7 = 0;
this.cachedTime = _local7;
} else {
_local7 = this.ease(this.cachedTime, 0, 1, this.cachedDuration);
};
};
};
if (((!((_cyclesComplete == int((this.cachedTotalTime / _local10))))) && (!(_local6)))){
_local8 = true;
_cyclesComplete = int((this.cachedTotalTime / _local10));
};
};
if ((((_local5 == this.cachedTime)) && (!(_arg3)))){
return;
};
if (!this.initted){
init();
};
if ((((_local5 == 0)) && (!(_arg2)))){
if (this.vars.onStart != null){
this.vars.onStart.apply(null, this.vars.onStartParams);
};
if (_dispatcher != null){
_dispatcher.dispatchEvent(new TweenEvent(TweenEvent.START));
};
};
var _local9:PropTween = _firstPropTween;
while (_local9) {
_local9.target[_local9.property] = (_local9.start + (_local7 * _local9.change));
_local9 = _local9.nextNode;
};
if (((_hasUpdate) && (!(_arg2)))){
this.vars.onUpdate.apply(null, this.vars.onUpdateParams);
};
if (((_hasUpdateListener) && (!(_arg2)))){
_dispatcher.dispatchEvent(new TweenEvent(TweenEvent.UPDATE));
};
if (_local6){
complete(true, _arg2);
} else {
if (((_local8) && (!(_arg2)))){
if (this.vars.onRepeat != null){
this.vars.onRepeat.apply(null, this.vars.onRepeatParams);
};
if (_dispatcher != null){
_dispatcher.dispatchEvent(new TweenEvent(TweenEvent.REPEAT));
};
};
};
}
public function set reversed(_arg1:Boolean):void{
var _local2:Number;
var _local3:Number;
if (_arg1 != this.cachedReversed){
_local2 = (_arg1) ? (1 - this.totalProgress) : this.totalProgress;
_local3 = ((_pauseTime) || (this.timeline.cachedTotalTime));
this.startTime = (_local3 - ((_local2 * this.totalDuration) / this.cachedTimeScale));
this.cachedReversed = _arg1;
};
}
public function willTrigger(_arg1:String):Boolean{
return (((_dispatcher)==null) ? false : _dispatcher.willTrigger(_arg1));
}
public function restart(_arg1:Boolean=false):void{
this.reversed = false;
this.paused = false;
this.totalTime = (_arg1) ? -(_delay) : 0;
}
override protected function init():void{
var _local1:int;
var _local2:int;
var _local3:String;
var _local4:String;
var _local5:Array;
var _local6:Object;
var _local7:PropTween;
if (this.vars.startAt != null){
this.vars.startAt.overwrite = 0;
this.vars.startAt.immediateRender = true;
new TweenMax(this.target, 0, this.vars.startAt);
};
super.init();
if ((((this.vars.roundProps is Array)) && (!((TweenLite.plugins.roundProps == null))))){
_local5 = this.vars.roundProps;
_local1 = (_local5.length - 1);
while (_local1 > -1) {
_local3 = _local5[_local1];
_local7 = this._firstPropTween;
while (_local7) {
if (_local7.name == _local3){
if (_local7.isPlugin){
_local7.target.round = true;
} else {
if (_local6 == null){
_local6 = new TweenLite.plugins.roundProps();
_local6.add(_local7.target, _local3, _local7.start, _local7.change);
_hasPlugins = true;
_firstPropTween = insertPropTween(_local6, "changeFactor", 0, 1, "_MULTIPLE_", true, _firstPropTween);
} else {
_local6.add(_local7.target, _local3, _local7.start, _local7.change);
this.removePropTween(_local7);
};
};
} else {
if (((((_local7.isPlugin) && ((_local7.name == "_MULTIPLE_")))) && (!(_local7.target.round)))){
_local4 = ((" " + _local7.target.overwriteProps.join(" ")) + " ");
if (_local4.indexOf(((" " + _local3) + " ")) != -1){
_local7.target.round = true;
};
};
};
_local7 = _local7.nextNode;
};
_local1--;
};
};
}
public function get totalProgress():Number{
return ((this.cachedTotalTime / this.totalDuration));
}
protected function adjustStartValues():void{
var _local2:Number;
var _local3:Number;
var _local4:PropTween;
var _local5:Number;
var _local6:int;
var _local1:Number = this.progress;
if (_local1 != 0){
_local2 = this.ease(_local1, 0, 1, 1);
_local3 = (1 / (1 - _local2));
_local4 = _firstPropTween;
while (_local4) {
_local5 = (_local4.start + _local4.change);
if (_local4.isPlugin){
_local4.change = ((_local5 - _local2) * _local3);
} else {
_local4.change = ((_local5 - _local4.target[_local4.property]) * _local3);
};
_local4.start = (_local5 - _local4.change);
_local4 = _local4.nextNode;
};
};
}
public function set time(_arg1:Number):void{
if (_cyclesComplete == 0){
this.totalTime = _arg1;
} else {
this.totalTime = (_arg1 + (_cyclesComplete * this.duration));
};
}
override public function set delay(_arg1:Number):void{
super.delay = _arg1;
setDirtyCache(true);
}
public function set totalProgress(_arg1:Number):void{
this.totalTime = (this.totalDuration * _arg1);
}
override public function set duration(_arg1:Number):void{
this.cachedDuration = _arg1;
this.setDirtyCache(true);
}
public function resume():void{
this.paused = false;
}
public function get paused():Boolean{
return (this.cachedPaused);
}
public function killProperties(_arg1:Array):void{
var _local3:int;
var _local2:Object = {};
_local3 = (_arg1.length - 1);
while (_local3 > -1) {
_local2[_arg1[_local3]] = true;
_local3--;
};
killVars(_local2);
}
public function play():void{
this.reversed = false;
this.paused = false;
}
public function get totalTime():Number{
return (this.cachedTotalTime);
}
override public function complete(_arg1:Boolean=false, _arg2:Boolean=false):void{
super.complete(_arg1, _arg2);
if (!_arg2){
if (((((this.cachedReversed) && ((this.cachedTotalTime == 0)))) && (!((this.cachedDuration == 0))))){
if (this.vars.onReverseComplete != null){
this.vars.onReverseComplete.apply(null, this.vars.onReverseCompleteParams);
};
if (_dispatcher != null){
_dispatcher.dispatchEvent(new TweenEvent(TweenEvent.REVERSE_COMPLETE));
};
} else {
if (_dispatcher != null){
_dispatcher.dispatchEvent(new TweenEvent(TweenEvent.COMPLETE));
};
};
};
}
public function invalidate():void{
_firstPropTween = null;
_overwrittenProps = null;
_hasUpdate = (_hasUpdateListener = false);
_rawPrevTime = -1;
if (((((!((this.vars.onCompleteListener == null))) || (!((this.vars.onUpdateListener == null))))) || (!((this.vars.onStartListener == null))))){
initDispatcher();
};
this.yoyo = Boolean((this.vars.yoyo == true));
_repeat = ((this.vars.repeat) || (0));
_repeatDelay = ((this.vars.repeatDelay) || (0));
this.initted = (this.active = false);
}
public function get progress():Number{
return ((this.cachedTime / this.duration));
}
public function dispatchEvent(_arg1:Event):Boolean{
return (((_dispatcher)==null) ? false : _dispatcher.dispatchEvent(_arg1));
}
public function get reversed():Boolean{
return (this.cachedReversed);
}
public function removeEventListener(_arg1:String, _arg2:Function, _arg3:Boolean=false):void{
if (_dispatcher != null){
_dispatcher.removeEventListener(_arg1, _arg2, _arg3);
};
}
public function setDestination(_arg1:String, _arg2, _arg3:Boolean=true):void{
var _local4:Object = {};
_local4[_arg1] = _arg2;
updateProperties(_local4, _arg3);
}
public function addEventListener(_arg1:String, _arg2:Function, _arg3:Boolean=false, _arg4:int=0, _arg5:Boolean=false):void{
if (_dispatcher == null){
initDispatcher();
};
if (_arg1 == TweenEvent.UPDATE){
_hasUpdateListener = true;
};
_dispatcher.addEventListener(_arg1, _arg2, _arg3, _arg4, _arg5);
}
protected function initDispatcher():void{
if (_dispatcher == null){
_dispatcher = new EventDispatcher(this);
};
if ((this.vars.onStartListener is Function)){
_dispatcher.addEventListener(TweenEvent.START, this.vars.onStartListener, false, 0, true);
};
if ((this.vars.onUpdateListener is Function)){
_dispatcher.addEventListener(TweenEvent.UPDATE, this.vars.onUpdateListener, false, 0, true);
_hasUpdateListener = true;
};
if ((this.vars.onCompleteListener is Function)){
_dispatcher.addEventListener(TweenEvent.COMPLETE, this.vars.onCompleteListener, false, 0, true);
};
if ((this.vars.onRepeatListener is Function)){
_dispatcher.addEventListener(TweenEvent.REPEAT, this.vars.onRepeatListener, false, 0, true);
};
if ((this.vars.onReverseCompleteListener is Function)){
_dispatcher.addEventListener(TweenEvent.REVERSE_COMPLETE, this.vars.onReverseCompleteListener, false, 0, true);
};
}
protected function setDirtyCache(_arg1:Boolean=true):void{
var _local2:Tweenable = (_arg1) ? this : this.timeline;
while (_local2) {
_local2.cacheIsDirty = true;
_local2 = _local2.timeline;
};
}
public function set progress(_arg1:Number):void{
if (_cyclesComplete == 0){
this.totalTime = (this.duration * _arg1);
} else {
this.totalTime = ((this.duration * _arg1) + (_cyclesComplete * this.cachedDuration));
};
}
protected function updateProperties(_arg1:Object, _arg2:Boolean=true):void{
var _local5:String;
var _local6:Object;
var _local7:Boolean;
var _local8:Object;
var _local9:int;
var _local3:PropTween = _firstPropTween;
var _local4:Number = this.cachedTotalTime;
if (this.initted){
if (!_arg2){
this.time = 0;
};
killVars(_arg1, false);
for (_local5 in _arg1) {
if ((_local5 in _reservedProps)){
} else {
if ((_local5 in plugins)){
_local6 = new (plugins[_local5]);
if (_local6.onInitTween(this.target, _arg1[_local5], this) == false){
_firstPropTween = insertPropTween(this.target, _local5, this.target[_local5], _arg1[_local5], _local5, false, _firstPropTween);
} else {
_local8 = {};
_local9 = _local6.overwriteProps.length;
while (_local9-- > 0) {
_local8[_local6.overwriteProps[_local9]] = true;
};
killVars(_local8, false);
_firstPropTween = insertPropTween(_local6, "changeFactor", 0, 1, ((_local6.overwriteProps.length)==1) ? _local6.overwriteProps[0] : "_MULTIPLE_", true, _firstPropTween);
_hasPlugins = true;
if (_local6.priority != 0){
_firstPropTween.priority = _local6.priority;
_local7 = true;
};
};
} else {
_firstPropTween = insertPropTween(this.target, _local5, this.target[_local5], _arg1[_local5], _local5, false, _firstPropTween);
};
};
this.vars[_local5] = _arg1[_local5];
};
if (_local7){
_firstPropTween = onPluginEvent("onInit", _firstPropTween);
};
if (((_arg2) && (!((this.cachedTotalTime == 0))))){
adjustStartValues();
this.time = _local4;
};
} else {
for (_local5 in _arg1) {
this.vars[_local5] = _arg1[_local5];
};
};
}
public function set totalTime(_arg1:Number):void{
var _local3:Number;
var _local2:Number = ((_pauseTime) || (this.timeline.cachedTotalTime));
if (this.cachedReversed){
_local3 = (this.cacheIsDirty) ? this.totalDuration : this.cachedTotalDuration;
this.startTime = (_local2 - ((_local3 - _arg1) / this.cachedTimeScale));
} else {
this.startTime = (_local2 - (_arg1 / this.cachedTimeScale));
};
renderTime(_arg1, false, false);
setDirtyCache(false);
}
public function set paused(_arg1:Boolean):void{
if (_arg1 != this.cachedPaused){
if (_arg1){
_pauseTime = this.timeline.rawTime;
} else {
this.startTime = (this.startTime + (this.timeline.rawTime - _pauseTime));
_pauseTime = NaN;
setDirtyCache(false);
};
this.cachedPaused = _arg1;
this.active = Boolean(((((!(this.cachedPaused)) && ((this.cachedTotalTime > 0)))) && ((this.cachedTotalTime < this.cachedTotalDuration))));
};
if (((!(_arg1)) && (this.gc))){
this.setEnabled(true, false);
};
}
public function get time():Number{
return (this.cachedTime);
}
public function reverse(_arg1:Boolean=true):void{
this.reversed = true;
setDirtyCache(false);
if (_arg1){
this.paused = false;
} else {
if (this.gc){
this.setEnabled(true, false);
};
};
}
public function hasEventListener(_arg1:String):Boolean{
return (((_dispatcher)==null) ? false : _dispatcher.hasEventListener(_arg1));
}
public function pause():void{
this.paused = true;
}
override public function set totalDuration(_arg1:Number):void{
if (_repeat == -1){
return;
};
this.duration = ((_arg1 - (_repeat * _repeatDelay)) / (_repeat + 1));
}
override public function get totalDuration():Number{
if (this.cacheIsDirty){
this.cachedTotalDuration = ((_repeat)==-1) ? 999999999999 : ((this.cachedDuration * (_repeat + 1)) + (_repeatDelay * _repeat));
this.cacheIsDirty = false;
};
return (this.cachedTotalDuration);
}
public function set timeScale(_arg1:Number):void{
if (_arg1 == 0){
_arg1 = 0.0001;
};
var _local2:Number = ((_pauseTime) || (this.timeline.cachedTotalTime));
this.startTime = (_local2 - (((_local2 - this.startTime) * this.cachedTimeScale) / _arg1));
this.cachedTimeScale = _arg1;
}
public function get timeScale():Number{
return (this.cachedTimeScale);
}
public static function set globalTimeScale(_arg1:Number):void{
if (_arg1 == 0){
_arg1 = 0.0001;
};
var _local2:SimpleTimeline = TweenLite.rootTimeline;
var _local3:Number = (getTimer() * 0.001);
_local2.startTime = (_local3 - (((_local3 - _local2.startTime) * _local2.cachedTimeScale) / _arg1));
_local2 = TweenLite.rootFramesTimeline;
_local3 = TweenLite.rootFrame;
_local2.startTime = (_local3 - (((_local3 - _local2.startTime) * _local2.cachedTimeScale) / _arg1));
TweenLite.rootFramesTimeline.cachedTimeScale = (TweenLite.rootTimeline.cachedTimeScale = _arg1);
}
public static function fromTo(_arg1:Object, _arg2:Number, _arg3:Object, _arg4:Object):TweenMax{
_arg4.startAt = _arg3;
if (_arg3.immediateRender == true){
_arg4.immediateRender = true;
};
return (new TweenMax(_arg1, _arg2, _arg4));
}
public static function allFromTo(_arg1:Array, _arg2:Number, _arg3:Object, _arg4:Object, _arg5:Number=0, _arg6:Function=null, _arg7:Array=null):Array{
_arg4.startAt = _arg3;
if (_arg3.immediateRender == true){
_arg4.immediateRender = true;
};
return (allTo(_arg1, _arg2, _arg4, _arg5, _arg6, _arg7));
}
public static function pauseAll(_arg1:Boolean=true, _arg2:Boolean=false):void{
changePause(true, _arg1, _arg2);
}
public static function getTweensOf(_arg1:Object):Array{
var _local4:int;
var _local2:Array = masterList[_arg1];
var _local3:Array = [];
if (_local2 != null){
_local4 = _local2.length;
while (_local4-- > 0) {
if (!_local2[_local4].gc){
_local3[_local3.length] = _local2[_local4];
};
};
};
return (_local3);
}
public static function killAllDelayedCalls(_arg1:Boolean=false):void{
killAll(_arg1, false, true);
}
public static function get globalTimeScale():Number{
return (TweenLite.rootTimeline.cachedTimeScale);
}
public static function delayedCall(_arg1:Number, _arg2:Function, _arg3:Array=null, _arg4:Boolean=false):TweenMax{
return (new TweenMax(_arg2, 0, {delay:_arg1, onComplete:_arg2, onCompleteParams:_arg3, immediateRender:false, useFrames:_arg4, overwrite:0}));
}
public static function isTweening(_arg1:Object):Boolean{
var _local2:Array = getTweensOf(_arg1);
var _local3:int = _local2.length;
while (_local3-- > 0) {
if (((((_local2[_local3].active) || ((((_local2[_local3].startTime == _local2[_local3].timeline.cachedTime)) && (_local2[_local3].timeline.active))))) && (!(_local2[_local3].gc)))){
return (true);
};
};
return (false);
}
public static function killAll(_arg1:Boolean=false, _arg2:Boolean=true, _arg3:Boolean=true):void{
var _local5:Boolean;
var _local4:Array = getAllTweens();
var _local6:int = _local4.length;
while (_local6-- > 0) {
_local5 = (_local4[_local6].target == _local4[_local6].vars.onComplete);
if ((((_local5 == _arg3)) || (!((_local5 == _arg2))))){
if (_arg1){
_local4[_local6].complete(false);
} else {
_local4[_local6].setEnabled(false, false);
};
};
};
}
public static function killChildTweensOf(_arg1:DisplayObjectContainer, _arg2:Boolean=false):void{
var _local4:Object;
var _local5:DisplayObjectContainer;
var _local3:Array = getAllTweens();
var _local6:int = _local3.length;
while (_local6-- > 0) {
_local4 = _local3[_local6].target;
if ((_local4 is DisplayObject)){
_local5 = _local4.parent;
while (_local5 != null) {
if (_local5 == _arg1){
if (_arg2){
_local3[_local6].complete(false);
} else {
_local3[_local6].setEnabled(false, false);
};
};
_local5 = _local5.parent;
};
};
};
}
public static function changePause(_arg1:Boolean, _arg2:Boolean=true, _arg3:Boolean=false):void{
var _local5:Boolean;
var _local4:Array = getAllTweens();
var _local6:int = _local4.length;
while (_local6-- > 0) {
_local5 = (_local4[_local6].target == _local4[_local6].vars.onComplete);
if ((((_local4[_local6] is TweenMax)) && ((((_local5 == _arg3)) || (!((_local5 == _arg2))))))){
(_local4[_local6] as TweenMax).paused = _arg1;
};
};
}
public static function from(_arg1:Object, _arg2:Number, _arg3:Object):TweenMax{
_arg3.runBackwards = true;
if (_arg3.immediateRender != false){
_arg3.immediateRender = true;
};
return (new TweenMax(_arg1, _arg2, _arg3));
}
public static function allFrom(_arg1:Array, _arg2:Number, _arg3:Object, _arg4:Number=0, _arg5:Function=null, _arg6:Array=null):Array{
_arg3.runBackwards = true;
if (_arg3.immediateRender != false){
_arg3.immediateRender = true;
};
return (allTo(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6));
}
public static function killAllTweens(_arg1:Boolean=false):void{
killAll(_arg1, true, false);
}
public static function getAllTweens():Array{
var _local3:Array;
var _local4:int;
var _local1:Dictionary = masterList;
var _local2:Array = [];
for each (_local3 in _local1) {
_local4 = _local3.length;
while (_local4-- > 0) {
if (!_local3[_local4].gc){
_local2[_local2.length] = _local3[_local4];
};
};
};
return (_local2);
}
public static function resumeAll(_arg1:Boolean=true, _arg2:Boolean=false):void{
changePause(false, _arg1, _arg2);
}
public static function to(_arg1:Object, _arg2:Number, _arg3:Object):TweenMax{
return (new TweenMax(_arg1, _arg2, _arg3));
}
public static function allTo(_arg1:Array, _arg2:Number, _arg3:Object, _arg4:Number=0, _arg5:Function=null, _arg6:Array=null):Array{
var i:int;
var vars:Object;
var p:String;
var onCompleteProxy:Function;
var onCompleteParamsProxy:Array;
var $targets = _arg1;
var $duration = _arg2;
var $vars = _arg3;
var $stagger = _arg4;
var $onCompleteAll = _arg5;
var $onCompleteAllParams = _arg6;
var l:uint = $targets.length;
var a:Array = [];
var curDelay:Number = (($vars.delay) || (0));
onCompleteProxy = $vars.onComplete;
onCompleteParamsProxy = $vars.onCompleteParams;
var lastIndex:int = (($stagger)<=0) ? 0 : (l - 1);
i = 0;
while (i < l) {
vars = {};
for (p in $vars) {
vars[p] = $vars[p];
};
vars.delay = curDelay;
if ((((i == lastIndex)) && (!(($onCompleteAll == null))))){
vars.onComplete = function ():void{
if (onCompleteProxy != null){
onCompleteProxy.apply(null, onCompleteParamsProxy);
};
$onCompleteAll.apply(null, $onCompleteAllParams);
};
};
a[a.length] = new TweenMax($targets[i], $duration, vars);
curDelay = (curDelay + $stagger);
i = (i + 1);
};
return (a);
}
}
}//package gs
Section 29
//ActionTrigger (idv.cjcat.stardust.common.actions.triggers.ActionTrigger)
package idv.cjcat.stardust.common.actions.triggers {
import idv.cjcat.stardust.common.actions.*;
import idv.cjcat.stardust.common.particles.*;
import idv.cjcat.stardust.common.emitters.*;
public class ActionTrigger extends CompositeAction {
override public function update(_arg1:Emitter, _arg2:Particle, _arg3:Number):void{
if (testTrigger(_arg1, _arg2, _arg3)){
super.update(_arg1, _arg2, _arg3);
};
}
override public function getElementTypeXMLTag():XML{
return (<triggers/>
);
}
override public function getXMLTagName():String{
return ("ActionTrigger");
}
public function testTrigger(_arg1:Emitter, _arg2:Particle, _arg3:Number):Boolean{
return (false);
}
}
}//package idv.cjcat.stardust.common.actions.triggers
Section 30
//DeathTrigger (idv.cjcat.stardust.common.actions.triggers.DeathTrigger)
package idv.cjcat.stardust.common.actions.triggers {
import idv.cjcat.stardust.common.particles.*;
import idv.cjcat.stardust.common.emitters.*;
public class DeathTrigger extends ActionTrigger {
public function DeathTrigger(){
priority = -100;
}
override public function getXMLTagName():String{
return ("DeathTrigger");
}
override public function testTrigger(_arg1:Emitter, _arg2:Particle, _arg3:Number):Boolean{
return (_arg2.isDead);
}
}
}//package idv.cjcat.stardust.common.actions.triggers
Section 31
//LifeTrigger (idv.cjcat.stardust.common.actions.triggers.LifeTrigger)
package idv.cjcat.stardust.common.actions.triggers {
import idv.cjcat.stardust.common.xml.*;
import idv.cjcat.stardust.common.particles.*;
import idv.cjcat.stardust.common.emitters.*;
public class LifeTrigger extends ActionTrigger {
public var triggerEvery:Number;
public var triggerWithinBounds:Boolean;
private var _upperBound:Number;
private var _lowerBound:Number;
public function LifeTrigger(_arg1:Number=0, _arg2:Number=1.79769313486232E308, _arg3:Boolean=true, _arg4:Number=1){
this.lowerBound = _arg1;
this.upperBound = _arg2;
this.triggerWithinBounds = _arg3;
this.triggerEvery = _arg4;
}
override public function getXMLTagName():String{
return ("LifeTrigger");
}
override public function testTrigger(_arg1:Emitter, _arg2:Particle, _arg3:Number):Boolean{
if (triggerWithinBounds){
if ((((_arg2.life >= lowerBound)) && ((_arg2.life <= upperBound)))){
return (((_arg2.life % triggerEvery) < _arg3));
};
} else {
if ((((_arg2.life < lowerBound)) || ((_arg2.life > upperBound)))){
return (((_arg2.life % triggerEvery) < _arg3));
};
};
return (false);
}
public function set upperBound(_arg1:Number):void{
if (_arg1 < _lowerBound){
_lowerBound = _arg1;
};
_upperBound = _arg1;
}
public function get upperBound():Number{
return (_upperBound);
}
override public function parseXML(_arg1:XML, _arg2:XMLBuilder=null):void{
super.parseXML(_arg1, _arg2);
triggerWithinBounds = (_arg1.@triggerWithinBounds == "true");
triggerEvery = parseFloat(_arg1.@triggerEvery);
lowerBound = parseFloat(_arg1.@lowerBound);
upperBound = parseFloat(_arg1.@upperBound);
}
override public function toXML():XML{
var _local1:XML = super.toXML();
_local1.@triggerWithinBounds = triggerWithinBounds;
_local1.@triggerEvery = triggerEvery;
_local1.@lowerBound = lowerBound;
_local1.@upperBound = upperBound;
return (_local1);
}
public function set lowerBound(_arg1:Number):void{
if (_arg1 > _upperBound){
_upperBound = _arg1;
};
_lowerBound = _arg1;
}
public function get lowerBound():Number{
return (_lowerBound);
}
}
}//package idv.cjcat.stardust.common.actions.triggers
Section 32
//Action (idv.cjcat.stardust.common.actions.Action)
package idv.cjcat.stardust.common.actions {
import flash.events.*;
import idv.cjcat.stardust.common.xml.*;
import idv.cjcat.stardust.common.*;
import idv.cjcat.stardust.common.particles.*;
import idv.cjcat.stardust.common.events.*;
import idv.cjcat.stardust.common.emitters.*;
public class Action extends StardustElement implements IEventDispatcher {
private var _priority:int;
public var active:Boolean;
private var _mask:int;
protected var _supports3D:Boolean;
private var _eventDispatcher:EventDispatcher;
protected var _supports2D:Boolean;
public function Action(){
_supports2D = (_supports3D = true);
_eventDispatcher = new EventDispatcher(this);
priority = CommonActionPriority.getInstance().getPriority((Object(this).constructor as Class));
active = true;
_mask = 1;
}
public function dispatchEvent(_arg1:Event):Boolean{
return (_eventDispatcher.dispatchEvent(_arg1));
}
public function set priority(_arg1:int):void{
_priority = _arg1;
dispatchEvent(new ActionEvent(ActionEvent.PRIORITY_CHANGE, this));
}
public function update(_arg1:Emitter, _arg2:Particle, _arg3:Number):void{
}
public function removeEventListener(_arg1:String, _arg2:Function, _arg3:Boolean=false):void{
_eventDispatcher.removeEventListener(_arg1, _arg2, _arg3);
}
public function addEventListener(_arg1:String, _arg2:Function, _arg3:Boolean=false, _arg4:int=0, _arg5:Boolean=false):void{
_eventDispatcher.addEventListener(_arg1, _arg2, _arg3, _arg4, _arg5);
}
public function postUpdate(_arg1:Emitter, _arg2:Number):void{
}
override public function getElementTypeXMLTag():XML{
return (<actions/>
);
}
public function preUpdate(_arg1:Emitter, _arg2:Number):void{
}
public function set mask(_arg1:int):void{
_mask = _arg1;
}
public function get needsSortedParticles():Boolean{
return (false);
}
public function get supports2D():Boolean{
return (_supports2D);
}
public function willTrigger(_arg1:String):Boolean{
return (_eventDispatcher.willTrigger(_arg1));
}
override public function toXML():XML{
var _local1:XML = super.toXML();
_local1.@active = active;
_local1.@mask = mask;
return (_local1);
}
public function get priority():int{
return (_priority);
}
override public function getXMLTagName():String{
return ("Action");
}
public function get mask():int{
return (_mask);
}
final public function doUpdate(_arg1:Emitter, _arg2:Particle, _arg3:Number):void{
if (!active){
return;
};
if ((mask & _arg2.mask) == 0){
return;
};
update(_arg1, _arg2, _arg3);
}
override public function parseXML(_arg1:XML, _arg2:XMLBuilder=null):void{
super.parseXML(_arg1, _arg2);
active = (_arg1.@active == "true");
mask = parseInt(_arg1.@mask);
}
public function hasEventListener(_arg1:String):Boolean{
return (_eventDispatcher.hasEventListener(_arg1));
}
public function get supports3D():Boolean{
return (_supports3D);
}
}
}//package idv.cjcat.stardust.common.actions
Section 33
//ActionCollection (idv.cjcat.stardust.common.actions.ActionCollection)
package idv.cjcat.stardust.common.actions {
import flash.events.*;
import idv.cjcat.stardust.common.events.*;
import idv.cjcat.stardust.*;
public class ActionCollection implements ActionCollector {
sd var actions:Array;
public function ActionCollection(){
actions = [];
}
final public function clearActions():void{
var _local1:Action;
for each (_local1 in actions) {
removeAction(_local1);
};
}
final public function sortActions(_arg1:Event=null):void{
actions.sortOn("priority", (Array.NUMERIC | Array.DESCENDING));
}
final public function removeAction(_arg1:Action):void{
var _local2:int;
while ((_local2 = actions.indexOf(_arg1)) >= 0) {
_arg1 = (actions.splice(_local2, 1)[0] as Action);
_arg1.removeEventListener(ActionEvent.PRIORITY_CHANGE, sortActions);
};
}
final public function addAction(_arg1:Action):void{
actions.push(_arg1);
_arg1.addEventListener(ActionEvent.PRIORITY_CHANGE, sortActions);
sortActions();
}
}
}//package idv.cjcat.stardust.common.actions
Section 34
//ActionCollector (idv.cjcat.stardust.common.actions.ActionCollector)
package idv.cjcat.stardust.common.actions {
public interface ActionCollector {
function clearActions():void;
function removeAction(_arg1:Action):void;
function addAction(_arg1:Action):void;
}
}//package idv.cjcat.stardust.common.actions
Section 35
//ActionPriority (idv.cjcat.stardust.common.actions.ActionPriority)
package idv.cjcat.stardust.common.actions {
import flash.utils.*;
public class ActionPriority {
protected var priorities:Dictionary;
private static var _instance:ActionPriority;
public function ActionPriority(){
priorities = new Dictionary();
populatePriorities();
}
final public function getPriority(_arg1:Class):int{
if (priorities[_arg1] == undefined){
return (0);
};
return (priorities[_arg1]);
}
protected function populatePriorities():void{
}
public static function getInstance():ActionPriority{
if (!_instance){
_instance = new (ActionPriority);
};
return (_instance);
}
}
}//package idv.cjcat.stardust.common.actions
Section 36
//Age (idv.cjcat.stardust.common.actions.Age)
package idv.cjcat.stardust.common.actions {
import idv.cjcat.stardust.common.xml.*;
import idv.cjcat.stardust.common.particles.*;
import idv.cjcat.stardust.common.emitters.*;
public class Age extends Action {
public var multiplier:Number;
public function Age(_arg1:Number=1){
this.multiplier = _arg1;
}
override public function getXMLTagName():String{
return ("Age");
}
override public function parseXML(_arg1:XML, _arg2:XMLBuilder=null):void{
super.parseXML(_arg1, _arg2);
multiplier = parseFloat(_arg1.@multiplier);
}
override public function update(_arg1:Emitter, _arg2:Particle, _arg3:Number):void{
_arg2.life = (_arg2.life - (_arg3 * multiplier));
if (_arg2.life < 0){
_arg2.life = 0;
};
}
override public function toXML():XML{
var _local1:XML = super.toXML();
_local1.@multiplier = multiplier;
return (_local1);
}
}
}//package idv.cjcat.stardust.common.actions
Section 37
//AlphaCurve (idv.cjcat.stardust.common.actions.AlphaCurve)
package idv.cjcat.stardust.common.actions {
import idv.cjcat.stardust.common.xml.*;
import idv.cjcat.stardust.common.particles.*;
import idv.cjcat.stardust.common.emitters.*;
import idv.cjcat.stardust.common.easing.*;
public class AlphaCurve extends Action {
public var inAlpha:Number;
private var _outFunction:Function;
public var inLifespan:Number;
private var _inFunctionExtraParams:Array;
private var _outFunctionExtraParams:Array;
public var outAlpha:Number;
public var outLifespan:Number;
private var _inFunction:Function;
public function AlphaCurve(_arg1:Number=0, _arg2:Number=0, _arg3:Function=null, _arg4:Function=null){
this.inAlpha = 0;
this.outAlpha = 0;
this.inLifespan = _arg1;
this.outLifespan = _arg2;
this.inFunction = _arg3;
this.outFunction = _arg4;
this.inFunctionExtraParams = [];
this.outFunctionExtraParams = [];
}
public function get outFunction():Function{
return (_outFunction);
}
override public function update(_arg1:Emitter, _arg2:Particle, _arg3:Number):void{
if ((_arg2.initLife - _arg2.life) < inLifespan){
_arg2.alpha = _inFunction.apply(null, [(_arg2.initLife - _arg2.life), inAlpha, (_arg2.initAlpha - inAlpha), inLifespan].concat(_inFunctionExtraParams));
} else {
if (_arg2.life < outLifespan){
_arg2.alpha = _outFunction.apply(null, [(outLifespan - _arg2.life), _arg2.initAlpha, (outAlpha - _arg2.initAlpha), outLifespan].concat(_outFunctionExtraParams));
} else {
_arg2.alpha = _arg2.initAlpha;
};
};
}
public function set outFunction(_arg1:Function):void{
if (_arg1 == null){
_arg1 = Linear.easeOut;
};
_outFunction = _arg1;
}
public function get outFunctionExtraParams():Array{
return (_outFunctionExtraParams);
}
public function get inFunctionExtraParams():Array{
return (_inFunctionExtraParams);
}
override public function toXML():XML{
var _local1:XML = super.toXML();
_local1.@inAlpha = inAlpha;
_local1.@outAlpha = outAlpha;
_local1.@inLifespan = inLifespan;
_local1.@outLifespan = outLifespan;
_local1.@inFunction = EasingFunctionType.functions[inFunction];
_local1.@outFunction = EasingFunctionType.functions[outFunction];
return (_local1);
}
public function get inFunction():Function{
return (_inFunction);
}
override public function getXMLTagName():String{
return ("AlphaCurve");
}
public function set outFunctionExtraParams(_arg1:Array):void{
if (!_arg1){
_arg1 = [];
};
_outFunctionExtraParams = _arg1;
}
override public function parseXML(_arg1:XML, _arg2:XMLBuilder=null):void{
super.parseXML(_arg1, _arg2);
inAlpha = parseFloat(_arg1.@inAlpha);
outAlpha = parseFloat(_arg1.@outAlpha);
inLifespan = parseFloat(_arg1.@inLifespan);
outLifespan = parseFloat(_arg1.@outLifespan);
inFunction = EasingFunctionType.functions[_arg1.@inFunction.toString()];
outFunction = EasingFunctionType.functions[_arg1.@outFunction.toString()];
}
public function set inFunctionExtraParams(_arg1:Array):void{
if (!_arg1){
_arg1 = [];
};
_inFunctionExtraParams = _arg1;
}
public function set inFunction(_arg1:Function):void{
if (_arg1 == null){
_arg1 = Linear.easeIn;
};
_inFunction = _arg1;
}
}
}//package idv.cjcat.stardust.common.actions
Section 38
//CommonActionPriority (idv.cjcat.stardust.common.actions.CommonActionPriority)
package idv.cjcat.stardust.common.actions {
import idv.cjcat.stardust.common.actions.triggers.*;
public class CommonActionPriority extends ActionPriority {
private static var _instance:CommonActionPriority;
final override protected function populatePriorities():void{
priorities[DeathLife] = -1;
priorities[DeathTrigger] = -5;
priorities[LifeTrigger] = -5;
}
public static function getInstance():CommonActionPriority{
if (!_instance){
_instance = new (CommonActionPriority);
};
return (_instance);
}
}
}//package idv.cjcat.stardust.common.actions
Section 39
//CompositeAction (idv.cjcat.stardust.common.actions.CompositeAction)
package idv.cjcat.stardust.common.actions {
import flash.events.*;
import idv.cjcat.stardust.common.xml.*;
import idv.cjcat.stardust.common.particles.*;
import idv.cjcat.stardust.common.events.*;
import idv.cjcat.stardust.common.emitters.*;
import idv.cjcat.stardust.*;
public class CompositeAction extends Action implements ActionCollector {
public var checkComponentMasks:Boolean;
sd var actions:ActionCollection;
public function CompositeAction(){
checkComponentMasks = false;
actions = new ActionCollection();
}
public function removeAction(_arg1:Action):void{
var _local2:int;
var _local3:Action;
while ((_local2 = actions.actions.indexOf(_arg1)) >= 0) {
_local3 = actions.actions.splice(_local2, 1)[0];
_local3.removeEventListener(ActionEvent.PRIORITY_CHANGE, sortActions);
};
}
final override public function get needsSortedParticles():Boolean{
var _local1:Action;
for each (_local1 in actions.actions) {
if (_local1.needsSortedParticles){
return (true);
};
};
return (false);
}
override public function toXML():XML{
var _local2:Action;
var _local1:XML = super.toXML();
_local1.@checkComponentMasks = checkComponentMasks;
if (actions.actions.length > 0){
_local1.appendChild(<actions/>
);
for each (_local2 in actions.actions) {
_local1.actions.appendChild(_local2.getXMLTag());
};
};
return (_local1);
}
final public function sortActions(_arg1:Event=null):void{
actions.actions.sortOn("priority", (Array.NUMERIC | Array.DESCENDING));
}
override public function update(_arg1:Emitter, _arg2:Particle, _arg3:Number):void{
var _local4:Action;
if (checkComponentMasks){
for each (_local4 in actions.actions) {
if (_local4.active){
_local4.doUpdate(_arg1, _arg2, _arg3);
};
};
} else {
for each (_local4 in actions.actions) {
if (_local4.active){
_local4.update(_arg1, _arg2, _arg3);
};
};
};
}
override public function getXMLTagName():String{
return ("CompositeAction");
}
override public function preUpdate(_arg1:Emitter, _arg2:Number):void{
var _local3:Action;
for each (_local3 in actions.actions) {
_local3.preUpdate(_arg1, _arg2);
};
}
override public function getRelatedObjects():Array{
return (actions.actions.concat());
}
public function clearActions():void{
var _local1:Action;
for each (_local1 in actions.actions) {
removeAction(_local1);
};
}
override public function parseXML(_arg1:XML, _arg2:XMLBuilder=null):void{
var _local3:XML;
super.parseXML(_arg1, _arg2);
checkComponentMasks = (_arg1.@checkComponentMasks == "true");
clearActions();
for each (_local3 in _arg1.actions.*) {
addAction((_arg2.getElementByName(_local3.@name) as Action));
};
}
public function addAction(_arg1:Action):void{
actions.actions.push(_arg1);
_arg1.addEventListener(ActionEvent.PRIORITY_CHANGE, sortActions);
sortActions();
}
}
}//package idv.cjcat.stardust.common.actions
Section 40
//DeathLife (idv.cjcat.stardust.common.actions.DeathLife)
package idv.cjcat.stardust.common.actions {
import idv.cjcat.stardust.common.particles.*;
import idv.cjcat.stardust.common.emitters.*;
public class DeathLife extends Action {
public var threshold:Number;
override public function update(_arg1:Emitter, _arg2:Particle, _arg3:Number):void{
if (_arg2.life <= 0){
_arg2.isDead = true;
};
}
override public function getXMLTagName():String{
return ("DeathLife");
}
}
}//package idv.cjcat.stardust.common.actions
Section 41
//Die (idv.cjcat.stardust.common.actions.Die)
package idv.cjcat.stardust.common.actions {
import idv.cjcat.stardust.common.particles.*;
import idv.cjcat.stardust.common.emitters.*;
public class Die extends Action {
override public function update(_arg1:Emitter, _arg2:Particle, _arg3:Number):void{
_arg2.isDead = true;
}
override public function getXMLTagName():String{
return ("Die");
}
}
}//package idv.cjcat.stardust.common.actions
Section 42
//ScaleCurve (idv.cjcat.stardust.common.actions.ScaleCurve)
package idv.cjcat.stardust.common.actions {
import idv.cjcat.stardust.common.xml.*;
import idv.cjcat.stardust.common.particles.*;
import idv.cjcat.stardust.common.emitters.*;
import idv.cjcat.stardust.common.easing.*;
public class ScaleCurve extends Action {
private var _outFunction:Function;
public var inLifespan:Number;
private var _inFunctionExtraParams:Array;
public var outScale:Number;
public var inScale:Number;
private var _outFunctionExtraParams:Array;
public var outLifespan:Number;
private var _inFunction:Function;
public function ScaleCurve(_arg1:Number=0, _arg2:Number=0, _arg3:Function=null, _arg4:Function=null){
this.inScale = 0;
this.outScale = 0;
this.inLifespan = _arg1;
this.outLifespan = _arg2;
this.inFunction = _arg3;
this.outFunction = _arg4;
this.inFunctionExtraParams = [];
this.outFunctionExtraParams = [];
}
public function get outFunction():Function{
return (_outFunction);
}
override public function update(_arg1:Emitter, _arg2:Particle, _arg3:Number):void{
if ((_arg2.initLife - _arg2.life) < inLifespan){
_arg2.scale = _inFunction.apply(null, [(_arg2.initLife - _arg2.life), inScale, (_arg2.initScale - inScale), inLifespan].concat(_inFunctionExtraParams));
} else {
if (_arg2.life < outLifespan){
_arg2.scale = _outFunction.apply(null, [(outLifespan - _arg2.life), _arg2.initScale, (outScale - _arg2.initScale), outLifespan].concat(_outFunctionExtraParams));
} else {
_arg2.scale = _arg2.initScale;
};
};
}
public function set outFunction(_arg1:Function):void{
if (_arg1 == null){
_arg1 = Linear.easeOut;
};
_outFunction = _arg1;
}
public function get outFunctionExtraParams():Array{
return (_outFunctionExtraParams);
}
override public function parseXML(_arg1:XML, _arg2:XMLBuilder=null):void{
super.parseXML(_arg1, _arg2);
inScale = parseFloat(_arg1.@inScale);
inScale = parseFloat(_arg1.@inScale);
inLifespan = parseFloat(_arg1.@inLifespan);
outLifespan = parseFloat(_arg1.@outLifespan);
inFunction = EasingFunctionType.functions[_arg1.@inFunction.toString()];
outFunction = EasingFunctionType.functions[_arg1.@outFunction.toString()];
}
public function get inFunctionExtraParams():Array{
return (_inFunctionExtraParams);
}
public function get inFunction():Function{
return (_inFunction);
}
public function set outFunctionExtraParams(_arg1:Array):void{
if (!_arg1){
_arg1 = [];
};
_outFunctionExtraParams = _arg1;
}
override public function toXML():XML{
var _local1:XML = super.toXML();
_local1.@inScale = inScale;
_local1.@outScale = outScale;
_local1.@inLifespan = inLifespan;
_local1.@outLifespan = outLifespan;
_local1.@inFunction = EasingFunctionType.functions[inFunction];
_local1.@outFunction = EasingFunctionType.functions[outFunction];
return (_local1);
}
override public function getXMLTagName():String{
return ("ScaleCurve");
}
public function set inFunctionExtraParams(_arg1:Array):void{
if (!_arg1){
_arg1 = [];
};
_inFunctionExtraParams = _arg1;
}
public function set inFunction(_arg1:Function):void{
if (_arg1 == null){
_arg1 = Linear.easeIn;
};
_inFunction = _arg1;
}
}
}//package idv.cjcat.stardust.common.actions
Section 43
//Clock (idv.cjcat.stardust.common.clocks.Clock)
package idv.cjcat.stardust.common.clocks {
import idv.cjcat.stardust.common.*;
public class Clock extends StardustElement {
public function getTicks(_arg1:Number):int{
return (0);
}
override public function getElementTypeXMLTag():XML{
return (<clocks/>
);
}
}
}//package idv.cjcat.stardust.common.clocks
Section 44
//ClockCollection (idv.cjcat.stardust.common.clocks.ClockCollection)
package idv.cjcat.stardust.common.clocks {
import idv.cjcat.stardust.*;
public class ClockCollection implements ClockCollector {
sd var clocks:Array;
public function ClockCollection(){
clocks = [];
}
final public function clearClocks():void{
clocks = [];
}
final public function removeClock(_arg1:Clock):void{
var _local2:int;
while ((_local2 = clocks.indexOf(_arg1)) >= 0) {
clocks.splice(_local2, 1);
};
}
final public function addClock(_arg1:Clock):void{
clocks.push(_arg1);
}
}
}//package idv.cjcat.stardust.common.clocks
Section 45
//ClockCollector (idv.cjcat.stardust.common.clocks.ClockCollector)
package idv.cjcat.stardust.common.clocks {
public interface ClockCollector {
function clearClocks():void;
function removeClock(_arg1:Clock):void;
function addClock(_arg1:Clock):void;
}
}//package idv.cjcat.stardust.common.clocks
Section 46
//CompositeClock (idv.cjcat.stardust.common.clocks.CompositeClock)
package idv.cjcat.stardust.common.clocks {
import idv.cjcat.stardust.common.xml.*;
import idv.cjcat.stardust.*;
public class CompositeClock extends Clock implements ClockCollector {
protected var clockCollection:ClockCollection;
public function CompositeClock(){
clockCollection = new ClockCollection();
}
override public function getTicks(_arg1:Number):int{
var _local3:Clock;
var _local2:int;
for each (_local3 in clockCollection.sd::clocks) {
_local2 = (_local2 + _local3.getTicks(_arg1));
};
return (_local2);
}
override public function getXMLTagName():String{
return ("CompositeClock");
}
override public function parseXML(_arg1:XML, _arg2:XMLBuilder=null):void{
var _local3:XML;
super.parseXML(_arg1, _arg2);
clearClocks();
for each (_local3 in _arg1.clocks.*) {
addClock((_arg2.getElementByName(_local3.@name) as Clock));
};
}
final public function addClock(_arg1:Clock):void{
clockCollection.addClock(_arg1);
}
final public function removeClock(_arg1:Clock):void{
clockCollection.removeClock(_arg1);
}
final public function clearClocks():void{
clockCollection.clearClocks();
}
override public function toXML():XML{
var _local2:Clock;
var _local1:XML = super.toXML();
if (clockCollection.sd::clocks.length > 0){
_local1.appendChild(<clocks/>
);
for each (_local2 in clockCollection.sd::clocks) {
_local1.clocks.appendChild(_local2.getXMLTag());
};
};
return (_local1);
}
override public function getRelatedObjects():Array{
return (clockCollection.sd::clocks.concat());
}
}
}//package idv.cjcat.stardust.common.clocks
Section 47
//ImpulseClock (idv.cjcat.stardust.common.clocks.ImpulseClock)
package idv.cjcat.stardust.common.clocks {
import flash.events.*;
import idv.cjcat.stardust.common.xml.*;
public class ImpulseClock extends Clock {
private var _discharged:Boolean;
private var _dischargeCount:int;
public var repeatCount:int;
public var impulseCount:int;
public function ImpulseClock(_arg1:int=0, _arg2:int=1){
this.impulseCount = _arg1;
this.repeatCount = _arg2;
_discharged = true;
}
override public function getTicks(_arg1:Number):int{
var _local2:int;
if (!_discharged){
if (_dischargeCount >= repeatCount){
_discharged = true;
_local2 = 0;
} else {
_local2 = impulseCount;
_dischargeCount++;
};
} else {
_local2 = 0;
};
return (_local2);
}
override public function getXMLTagName():String{
return ("ImpulseClock");
}
override public function parseXML(_arg1:XML, _arg2:XMLBuilder=null):void{
super.parseXML(_arg1, _arg2);
impulseCount = parseInt(_arg1.@impulseCount);
repeatCount = parseInt(_arg1.@repeatCount);
}
public function impulse(_arg1:Event=null):void{
_dischargeCount = 0;
_discharged = false;
}
override public function toXML():XML{
var _local1:XML = super.toXML();
_local1.@impulseCount = impulseCount;
_local1.@repeatCount = repeatCount;
return (_local1);
}
}
}//package idv.cjcat.stardust.common.clocks
Section 48
//RandomClock (idv.cjcat.stardust.common.clocks.RandomClock)
package idv.cjcat.stardust.common.clocks {
import idv.cjcat.stardust.common.xml.*;
import idv.cjcat.stardust.common.math.*;
public class RandomClock extends Clock {
private var _random:Random;
public function RandomClock(_arg1:Random=null){
this.random = _arg1;
}
override public function getTicks(_arg1:Number):int{
var _local2:Number = (random.random() * _arg1);
var _local3 = (_local2 | 0);
return ((_local3 + int((((_local2 - _local3))>Math.random()) ? 1 : 0)));
}
override public function parseXML(_arg1:XML, _arg2:XMLBuilder=null):void{
super.parseXML(_arg1, _arg2);
random = (_arg2.getElementByName(_arg1.@random) as Random);
}
public function set random(_arg1:Random):void{
if (!_arg1){
_arg1 = new UniformRandom(0, 0);
};
_random = _arg1;
}
public function get random():Random{
return (_random);
}
override public function getXMLTagName():String{
return ("RandomClock");
}
override public function toXML():XML{
var _local1:XML = super.toXML();
_local1.@random = _random.name;
return (_local1);
}
override public function getRelatedObjects():Array{
return ([_random]);
}
}
}//package idv.cjcat.stardust.common.clocks
Section 49
//SteadyClock (idv.cjcat.stardust.common.clocks.SteadyClock)
package idv.cjcat.stardust.common.clocks {
import idv.cjcat.stardust.common.xml.*;
import idv.cjcat.stardust.common.math.*;
public class SteadyClock extends Clock {
public var ticksPerCall:Number;
public function SteadyClock(_arg1:Number=0){
this.ticksPerCall = _arg1;
}
override public function getTicks(_arg1:Number):int{
return (StardustMath.randomFloor((ticksPerCall * _arg1)));
}
override public function getXMLTagName():String{
return ("SteadyClock");
}
override public function parseXML(_arg1:XML, _arg2:XMLBuilder=null):void{
super.parseXML(_arg1, _arg2);
ticksPerCall = parseFloat(_arg1.@ticksPerCall);
}
override public function toXML():XML{
var _local1:XML = super.toXML();
_local1.@ticksPerCall = ticksPerCall;
return (_local1);
}
}
}//package idv.cjcat.stardust.common.clocks
Section 50
//Back (idv.cjcat.stardust.common.easing.Back)
package idv.cjcat.stardust.common.easing {
public class Back {
public static function easeOut(_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 easeIn(_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 easeInOut(_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));
}
}
}//package idv.cjcat.stardust.common.easing
Section 51
//Circ (idv.cjcat.stardust.common.easing.Circ)
package idv.cjcat.stardust.common.easing {
public class Circ {
public static function easeOut(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):Number{
_arg1 = ((_arg1 / _arg4) - 1);
return (((_arg3 * Math.sqrt((1 - (_arg1 * _arg1)))) + _arg2));
}
public static function easeIn(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):Number{
_arg1 = (_arg1 / _arg4);
return (((-(_arg3) * (Math.sqrt((1 - (_arg1 * _arg1))) - 1)) + _arg2));
}
public static function easeInOut(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):Number{
_arg1 = (_arg1 / (_arg4 / 2));
if (_arg1 < 1){
return ((((-(_arg3) / 2) * (Math.sqrt((1 - (_arg1 * _arg1))) - 1)) + _arg2));
};
_arg1 = (_arg1 - 2);
return ((((_arg3 / 2) * (Math.sqrt((1 - (_arg1 * _arg1))) + 1)) + _arg2));
}
}
}//package idv.cjcat.stardust.common.easing
Section 52
//Cubic (idv.cjcat.stardust.common.easing.Cubic)
package idv.cjcat.stardust.common.easing {
public class Cubic {
public static function easeOut(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):Number{
_arg1 = ((_arg1 / _arg4) - 1);
return (((_arg3 * (((_arg1 * _arg1) * _arg1) + 1)) + _arg2));
}
public static function easeIn(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):Number{
_arg1 = (_arg1 / _arg4);
return (((((_arg3 * _arg1) * _arg1) * _arg1) + _arg2));
}
public static function easeInOut(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):Number{
_arg1 = (_arg1 / (_arg4 / 2));
if (_arg1 < 1){
return ((((((_arg3 / 2) * _arg1) * _arg1) * _arg1) + _arg2));
};
_arg1 = (_arg1 - 2);
return ((((_arg3 / 2) * (((_arg1 * _arg1) * _arg1) + 2)) + _arg2));
}
}
}//package idv.cjcat.stardust.common.easing
Section 53
//EasingFunctionType (idv.cjcat.stardust.common.easing.EasingFunctionType)
package idv.cjcat.stardust.common.easing {
import flash.utils.*;
public class EasingFunctionType {
private static var _functions:Dictionary;
public static function get functions():Dictionary{
if (!_functions){
_functions = new Dictionary();
_functions["Back.easeIn"] = Back.easeIn;
_functions["Back.easeInOut"] = Back.easeInOut;
_functions["Back.easeOut"] = Back.easeOut;
_functions["Circ.easeIn"] = Circ.easeIn;
_functions["Circ.easeInOut"] = Circ.easeInOut;
_functions["Circ.easeOut"] = Circ.easeOut;
_functions["Cubic.easeIn"] = Cubic.easeIn;
_functions["Cubic.easeInOut"] = Cubic.easeInOut;
_functions["Cubic.easeOut"] = Cubic.easeOut;
_functions["Elastic.easeIn"] = Elastic.easeIn;
_functions["Elastic.easeInOut"] = Elastic.easeInOut;
_functions["Elastic.easeOut"] = Elastic.easeOut;
_functions["Expo.easeIn"] = Expo.easeIn;
_functions["Expo.easeInOut"] = Expo.easeInOut;
_functions["Expo.easeOut"] = Expo.easeOut;
_functions["Linear.easeIn"] = Linear.easeIn;
_functions["Linear.easeInOut"] = Linear.easeInOut;
_functions["Linear.easeNone"] = Linear.easeNone;
_functions["Linear.easeOut"] = Linear.easeOut;
_functions["Quad.easeIn"] = Quad.easeIn;
_functions["Quad.easeInOut"] = Quad.easeInOut;
_functions["Quad.easeOut"] = Quad.easeOut;
_functions["Quart.easeIn"] = Quart.easeIn;
_functions["Quart.easeInOut"] = Quart.easeInOut;
_functions["Quart.easeOut"] = Quart.easeOut;
_functions["Quint.easeIn"] = Quint.easeIn;
_functions["Quint.easeInOut"] = Quint.easeInOut;
_functions["Quint.easeOut"] = Quint.easeOut;
_functions["Sine.easeIn"] = Sine.easeIn;
_functions["Sine.easeInOut"] = Sine.easeInOut;
_functions["Sine.easeOut"] = Sine.easeOut;
_functions[Back.easeIn] = "Back.easeIn";
_functions[Back.easeInOut] = "Back.easeInOut";
_functions[Back.easeOut] = "Back.easeOut";
_functions[Circ.easeIn] = "Circ.easeIn";
_functions[Circ.easeInOut] = "Circ.easeInOut";
_functions[Circ.easeOut] = "Circ.easeOut";
_functions[Cubic.easeIn] = "Cubic.easeIn";
_functions[Cubic.easeInOut] = "Cubic.easeInOut";
_functions[Cubic.easeOut] = "Cubic.easeOut";
_functions[Elastic.easeIn] = "Elastic.easeIn";
_functions[Elastic.easeInOut] = "Elastic.easeInOut";
_functions[Elastic.easeOut] = "Elastic.easeOut";
_functions[Expo.easeIn] = "Expo.easeIn";
_functions[Expo.easeInOut] = "Expo.easeInOut";
_functions[Expo.easeOut] = "Expo.easeOut";
_functions[Linear.easeIn] = "Linear.easeIn";
_functions[Linear.easeInOut] = "Linear.easeInOut";
_functions[Linear.easeNone] = "Linear.easeNone";
_functions[Linear.easeOut] = "Linear.easeOut";
_functions[Quad.easeIn] = "Quad.easeIn";
_functions[Quad.easeInOut] = "Quad.easeInOut";
_functions[Quad.easeOut] = "Quad.easeOut";
_functions[Quart.easeIn] = "Quart.easeIn";
_functions[Quart.easeInOut] = "Quart.easeInOut";
_functions[Quart.easeOut] = "Quart.easeOut";
_functions[Quint.easeIn] = "Quint.easeIn";
_functions[Quint.easeInOut] = "Quint.easeInOut";
_functions[Quint.easeOut] = "Quint.easeOut";
_functions[Sine.easeIn] = "Sine.easeIn";
_functions[Sine.easeInOut] = "Sine.easeInOut";
_functions[Sine.easeOut] = "Sine.easeOut";
};
return (_functions);
}
}
}//package idv.cjcat.stardust.common.easing
Section 54
//Elastic (idv.cjcat.stardust.common.easing.Elastic)
package idv.cjcat.stardust.common.easing {
public class Elastic {
private static const _2PI:Number = 6.28318530717959;
public static function easeIn(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number=0, _arg6:Number=0):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 / _2PI) * Math.asin((_arg3 / _arg5)));
};
--_arg1;
return ((-(((_arg5 * Math.pow(2, (10 * _arg1))) * Math.sin(((((_arg1 * _arg4) - _local7) * _2PI) / _arg6)))) + _arg2));
}
public static function easeInOut(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number=0, _arg6:Number=0):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 / _2PI) * Math.asin((_arg3 / _arg5)));
};
if (_arg1 < 1){
--_arg1;
return (((-0.5 * ((_arg5 * Math.pow(2, (10 * _arg1))) * Math.sin(((((_arg1 * _arg4) - _local7) * _2PI) / _arg6)))) + _arg2));
};
--_arg1;
return ((((((_arg5 * Math.pow(2, (-10 * _arg1))) * Math.sin(((((_arg1 * _arg4) - _local7) * _2PI) / _arg6))) * 0.5) + _arg3) + _arg2));
}
public static function easeOut(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number=0, _arg6:Number=0):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 / _2PI) * Math.asin((_arg3 / _arg5)));
};
return (((((_arg5 * Math.pow(2, (-10 * _arg1))) * Math.sin(((((_arg1 * _arg4) - _local7) * _2PI) / _arg6))) + _arg3) + _arg2));
}
}
}//package idv.cjcat.stardust.common.easing
Section 55
//Expo (idv.cjcat.stardust.common.easing.Expo)
package idv.cjcat.stardust.common.easing {
public class Expo {
public static function easeOut(_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 easeIn(_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 easeInOut(_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));
}
}
}//package idv.cjcat.stardust.common.easing
Section 56
//Linear (idv.cjcat.stardust.common.easing.Linear)
package idv.cjcat.stardust.common.easing {
public class Linear {
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 idv.cjcat.stardust.common.easing
Section 57
//Quad (idv.cjcat.stardust.common.easing.Quad)
package idv.cjcat.stardust.common.easing {
public class Quad {
public static function easeOut(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):Number{
_arg1 = (_arg1 / _arg4);
return ((((-(_arg3) * _arg1) * (_arg1 - 2)) + _arg2));
}
public static function easeIn(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):Number{
_arg1 = (_arg1 / _arg4);
return ((((_arg3 * _arg1) * _arg1) + _arg2));
}
public static function easeInOut(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):Number{
_arg1 = (_arg1 / (_arg4 / 2));
if (_arg1 < 1){
return (((((_arg3 / 2) * _arg1) * _arg1) + _arg2));
};
--_arg1;
return ((((-(_arg3) / 2) * ((_arg1 * (_arg1 - 2)) - 1)) + _arg2));
}
}
}//package idv.cjcat.stardust.common.easing
Section 58
//Quart (idv.cjcat.stardust.common.easing.Quart)
package idv.cjcat.stardust.common.easing {
public class Quart {
public static function easeOut(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):Number{
_arg1 = ((_arg1 / _arg4) - 1);
return (((-(_arg3) * ((((_arg1 * _arg1) * _arg1) * _arg1) - 1)) + _arg2));
}
public static function easeIn(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):Number{
_arg1 = (_arg1 / _arg4);
return ((((((_arg3 * _arg1) * _arg1) * _arg1) * _arg1) + _arg2));
}
public static function easeInOut(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):Number{
_arg1 = (_arg1 / (_arg4 / 2));
if (_arg1 < 1){
return (((((((_arg3 / 2) * _arg1) * _arg1) * _arg1) * _arg1) + _arg2));
};
_arg1 = (_arg1 - 2);
return ((((-(_arg3) / 2) * ((((_arg1 * _arg1) * _arg1) * _arg1) - 2)) + _arg2));
}
}
}//package idv.cjcat.stardust.common.easing
Section 59
//Quint (idv.cjcat.stardust.common.easing.Quint)
package idv.cjcat.stardust.common.easing {
public class Quint {
public static function easeOut(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):Number{
_arg1 = ((_arg1 / _arg4) - 1);
return (((_arg3 * (((((_arg1 * _arg1) * _arg1) * _arg1) * _arg1) + 1)) + _arg2));
}
public static function easeIn(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):Number{
_arg1 = (_arg1 / _arg4);
return (((((((_arg3 * _arg1) * _arg1) * _arg1) * _arg1) * _arg1) + _arg2));
}
public static function easeInOut(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):Number{
_arg1 = (_arg1 / (_arg4 / 2));
if (_arg1 < 1){
return ((((((((_arg3 / 2) * _arg1) * _arg1) * _arg1) * _arg1) * _arg1) + _arg2));
};
_arg1 = (_arg1 - 2);
return ((((_arg3 / 2) * (((((_arg1 * _arg1) * _arg1) * _arg1) * _arg1) + 2)) + _arg2));
}
}
}//package idv.cjcat.stardust.common.easing
Section 60
//Sine (idv.cjcat.stardust.common.easing.Sine)
package idv.cjcat.stardust.common.easing {
public class Sine {
private static const _HALF_PI:Number = 1.5707963267949;
public static function easeOut(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):Number{
return (((_arg3 * Math.sin(((_arg1 / _arg4) * _HALF_PI))) + _arg2));
}
public static function easeIn(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):Number{
return ((((-(_arg3) * Math.cos(((_arg1 / _arg4) * _HALF_PI))) + _arg3) + _arg2));
}
public static function easeInOut(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):Number{
return ((((-(_arg3) / 2) * (Math.cos(((Math.PI * _arg1) / _arg4)) - 1)) + _arg2));
}
}
}//package idv.cjcat.stardust.common.easing
Section 61
//Emitter (idv.cjcat.stardust.common.emitters.Emitter)
package idv.cjcat.stardust.common.emitters {
import flash.events.*;
import idv.cjcat.stardust.common.initializers.*;
import idv.cjcat.stardust.common.actions.*;
import idv.cjcat.stardust.common.xml.*;
import idv.cjcat.stardust.common.*;
import idv.cjcat.stardust.common.particles.*;
import idv.cjcat.stardust.common.clocks.*;
import idv.cjcat.stardust.common.events.*;
import idv.cjcat.stardust.*;
import idv.cjcat.stardust.common.errors.*;
public class Emitter extends StardustElement implements IEventDispatcher, ActionCollector, InitializerCollector {
public var active:Boolean;
protected var factory:ParticleFactory;
private var _clock:Clock;
public var stepTimeInterval:Number;// = 1
private var _eventDispatcher:EventDispatcher;
sd var particles:Array;
private var _actionCollection:ActionCollection;
public var needsSort:Boolean;
protected var particleSorter:ParticleSorter;
public function Emitter(_arg1:Clock=null){
_eventDispatcher = new EventDispatcher(this);
needsSort = false;
particleSorter = ParticleSorter.getInstane();
if (!_arg1){
_arg1 = new SteadyClock(0);
};
this.clock = _arg1;
this.active = true;
_actionCollection = new ActionCollection();
particles = [];
}
public function addInitializer(_arg1:Initializer):void{
factory.addInitializer(_arg1);
}
final public function removeDeadParticles():void{
var _local6:Particle;
var _local1:int = particles.length;
var _local2:int;
var _local3:int;
var _local4:Array = new Array(_local1);
var _local5:Array = new Array(_local1);
for each (_local6 in particles) {
if (_local6.isDead){
_local1--;
_local4[_local2] = _local6;
_local2++;
} else {
_local5[_local3] = _local6;
_local3++;
};
};
_local4.length = (particles.length - _local1);
_local5.length = _local1;
particles = _local5;
if (_local4.length > 0){
dispatchEvent(new EmitterEvent(EmitterEvent.PARTICLES_REMOVED, _local4));
};
for each (_local6 in _local4) {
_local6.destroy();
factory.particlePool.recycle(_local6);
};
}
final public function removeParticles(_arg1:Array):void{
var _local3:int;
var _local4:Particle;
var _local2:Array = [];
for each (_local4 in _arg1) {
_local3 = _arg1.indexOf(_local4);
if (_local3 >= 0){
_arg1.splice(_local3, 1);
_local2.push(_local4);
};
};
if (_local2.length > 0){
dispatchEvent(new EmitterEvent(EmitterEvent.PARTICLES_REMOVED, _local2));
};
for each (_local4 in _local2) {
_local4.destroy();
factory.particlePool.recycle(_local4);
};
}
public function willTrigger(_arg1:String):Boolean{
return (_eventDispatcher.willTrigger(_arg1));
}
public function get clock():Clock{
return (_clock);
}
final public function addParticles(_arg1:Array):void{
var _local2:Particle;
var _local3:int;
if (!_arg1){
return;
};
for each (_local2 in _arg1) {
if ((!(_local2) is factory.particlePool.particleClass)){
throw (new ParticleClassError(((("Invalid particle class: " + (Object(_local2).constructor as Class)) + ". Expedted particle class: ") + factory.particlePool.particleClass), (Object(_local2).constructor as Class), (Object(_local2).constructor as Class)));
};
};
this.particles.length = (this.particles.length + _arg1.length);
_local3 = 0;
while (_local3 < _arg1.length) {
this.particles[(this.particles.length - (_local3 + 1))] = _arg1[_local3];
_local3++;
};
if (_arg1.length > 0){
dispatchEvent(new EmitterEvent(EmitterEvent.PARTICLES_ADDED, _arg1));
};
}
public function set clock(_arg1:Clock):void{
if (!_arg1){
_arg1 = new SteadyClock(0);
};
_clock = _arg1;
}
override public function toXML():XML{
var _local2:Action;
var _local3:Initializer;
var _local1:XML = super.toXML();
_local1.@clock = _clock.name;
if (actions.length > 0){
_local1.appendChild(<actions/>
);
for each (_local2 in actions) {
_local1.actions.appendChild(_local2.getXMLTag());
};
};
if (initializers.length > 0){
_local1.appendChild(<initializers/>
);
for each (_local3 in initializers) {
_local1.initializers.appendChild(_local3.getXMLTag());
};
};
return (_local1);
}
override public function getXMLTagName():String{
return ("Emitter");
}
final public function removeInitializer(_arg1:Initializer):void{
factory.removeInitializer(_arg1);
}
public function dispatchEvent(_arg1:Event):Boolean{
return (_eventDispatcher.dispatchEvent(_arg1));
}
override public function getElementTypeXMLTag():XML{
return (<emitters/>
);
}
public function addAction(_arg1:Action):void{
_actionCollection.addAction(_arg1);
}
final public function get numParticles():int{
return (particles.length);
}
public function removeEventListener(_arg1:String, _arg2:Function, _arg3:Boolean=false):void{
_eventDispatcher.removeEventListener(_arg1, _arg2, _arg3);
}
final public function step(_arg1:Event=null):void{
var _local3:int;
var _local4:Particle;
var _local6:Action;
var _local7:int;
var _local8:Array;
var _local2:Boolean;
if (active){
_local7 = clock.getTicks(stepTimeInterval);
_local8 = factory.createParticles(_local7);
addParticles(_local8);
};
var _local5:Boolean;
for each (_local6 in actions) {
_local6.preUpdate(this, stepTimeInterval);
if (!_local2){
if (_local6.needsSortedParticles){
particleSorter.sort(particles);
_local3 = 0;
while (_local3 < particles.length) {
Particle(particles[_local3]).sortedIndex = _local3;
_local3++;
};
_local2 = true;
};
};
if (_local5){
for each (_local4 in particles) {
_local6.doUpdate(this, _local4, stepTimeInterval);
};
_local5 = false;
} else {
for each (_local4 in particles) {
_local6.doUpdate(this, _local4, stepTimeInterval);
};
};
_local6.postUpdate(this, stepTimeInterval);
};
removeDeadParticles();
dispatchEvent(new EmitterEvent(EmitterEvent.STEPPED, particles));
if (!numParticles){
dispatchEvent(new EmitterEvent(EmitterEvent.EMITTER_EMPTY, null));
};
}
final public function clearInitializers():void{
factory.clearInitializers();
}
final sd function get initializers():Array{
return (factory.initializerCollection.initializers);
}
public function addEventListener(_arg1:String, _arg2:Function, _arg3:Boolean=false, _arg4:int=0, _arg5:Boolean=false):void{
_eventDispatcher.addEventListener(_arg1, _arg2, _arg3, _arg4, _arg5);
}
override public function getRelatedObjects():Array{
return ([_clock].concat(initializers).concat(actions));
}
final public function clearParticles():void{
var _local2:Particle;
var _local1:Array = particles;
particles = [];
if (_local1.length > 0){
dispatchEvent(new EmitterEvent(EmitterEvent.PARTICLES_REMOVED, _local1));
};
for each (_local2 in _local1) {
_local2.destroy();
factory.particlePool.recycle(_local2);
};
}
final public function removeAction(_arg1:Action):void{
_actionCollection.removeAction(_arg1);
}
override public function parseXML(_arg1:XML, _arg2:XMLBuilder=null):void{
var _local3:XML;
super.parseXML(_arg1, _arg2);
_actionCollection.clearActions();
factory.clearInitializers();
clock = (_arg2.getElementByName(_arg1.@clock) as Clock);
for each (_local3 in _arg1.actions.*) {
addAction((_arg2.getElementByName(_local3.@name) as Action));
};
for each (_local3 in _arg1.initializers.*) {
addInitializer((_arg2.getElementByName(_local3.@name) as Initializer));
};
}
final public function clearActions():void{
_actionCollection.clearActions();
}
public function hasEventListener(_arg1:String):Boolean{
return (_eventDispatcher.hasEventListener(_arg1));
}
final sd function get actions():Array{
return (_actionCollection.actions);
}
}
}//package idv.cjcat.stardust.common.emitters
Section 62
//DuplicateElementNameError (idv.cjcat.stardust.common.errors.DuplicateElementNameError)
package idv.cjcat.stardust.common.errors {
import idv.cjcat.stardust.common.*;
public class DuplicateElementNameError extends Error {
private var _element2:StardustElement;
private var _name:String;
private var _element1:StardustElement;
public function DuplicateElementNameError(_arg1, _arg2:String, _arg3:StardustElement, _arg4:StardustElement){
super(_arg1);
_element1 = _arg3;
_element2 = _arg4;
_name = _arg2;
}
public function get element2():StardustElement{
return (_element2);
}
public function get elementName():String{
return (_name);
}
public function get element1():StardustElement{
return (_element1);
}
}
}//package idv.cjcat.stardust.common.errors
Section 63
//ParticleClassError (idv.cjcat.stardust.common.errors.ParticleClassError)
package idv.cjcat.stardust.common.errors {
public class ParticleClassError extends Error {
private var _invalidClass:Class;
private var _expectedClass:Class;
public function ParticleClassError(_arg1, _arg2:Class, _arg3:Class){
super(_arg1);
_invalidClass = _arg2;
_expectedClass = _arg3;
}
public function get invalidClass():Class{
return (_invalidClass);
}
public function get expectedClass():Class{
return (_expectedClass);
}
}
}//package idv.cjcat.stardust.common.errors
Section 64
//ActionEvent (idv.cjcat.stardust.common.events.ActionEvent)
package idv.cjcat.stardust.common.events {
import flash.events.*;
import idv.cjcat.stardust.common.actions.*;
public class ActionEvent extends Event {
private var _action:Action;
public static const PRIORITY_CHANGE:String = "stardustActoinPriorityChange";
public function ActionEvent(_arg1:String, _arg2:Action){
super(_arg1);
_action = _arg2;
}
public function get action():Action{
return (_action);
}
}
}//package idv.cjcat.stardust.common.events
Section 65
//EmitterEvent (idv.cjcat.stardust.common.events.EmitterEvent)
package idv.cjcat.stardust.common.events {
import flash.events.*;
public class EmitterEvent extends Event {
private var _particles:Array;
public static const EMITTER_EMPTY:String = "stardustEmitterEmpty";
public static const PARTICLES_ADDED:String = "stardustEmitterParticleAdded";
public static const STEPPED:String = "stardustEmitterStepped";
public static const PARTICLES_REMOVED:String = "stardustEmitterParticleRemoved";
public function EmitterEvent(_arg1:String, _arg2:Array){
super(_arg1);
_particles = _arg2;
}
public function get particles():Array{
return (_particles);
}
}
}//package idv.cjcat.stardust.common.events
Section 66
//InitializerEvent (idv.cjcat.stardust.common.events.InitializerEvent)
package idv.cjcat.stardust.common.events {
import flash.events.*;
import idv.cjcat.stardust.common.initializers.*;
public class InitializerEvent extends Event {
private var _initializer:Initializer;
public static const PRIORITY_CHANGE:String = "stardustInitializerPriorityChange";
public function InitializerEvent(_arg1:String, _arg2:Initializer){
super(_arg1);
_initializer = _arg2;
}
public function get initializer():Initializer{
return (_initializer);
}
}
}//package idv.cjcat.stardust.common.events
Section 67
//Alpha (idv.cjcat.stardust.common.initializers.Alpha)
package idv.cjcat.stardust.common.initializers {
import idv.cjcat.stardust.common.xml.*;
import idv.cjcat.stardust.common.particles.*;
import idv.cjcat.stardust.common.math.*;
public class Alpha extends Initializer {
private var _random:Random;
public function Alpha(_arg1:Random=null){
this.random = _arg1;
}
override public function initialize(_arg1:Particle):void{
_arg1.initAlpha = (_arg1.alpha = random.random());
}
override public function parseXML(_arg1:XML, _arg2:XMLBuilder=null):void{
super.parseXML(_arg1, _arg2);
random = (_arg2.getElementByName(_arg1.@random) as Random);
}
public function set random(_arg1:Random):void{
if (!_arg1){
_arg1 = new UniformRandom(1, 0);
};
_random = _arg1;
}
public function get random():Random{
return (_random);
}
override public function getXMLTagName():String{
return ("Alpha");
}
override public function toXML():XML{
var _local1:XML = super.toXML();
_local1.@random = _random.name;
return (_local1);
}
override public function getRelatedObjects():Array{
return ([_random]);
}
}
}//package idv.cjcat.stardust.common.initializers
Section 68
//CollisionRadius (idv.cjcat.stardust.common.initializers.CollisionRadius)
package idv.cjcat.stardust.common.initializers {
import idv.cjcat.stardust.common.xml.*;
import idv.cjcat.stardust.common.particles.*;
public class CollisionRadius extends Initializer {
public var radius:Number;
public function CollisionRadius(_arg1:Number=0){
this.radius = _arg1;
}
override public function initialize(_arg1:Particle):void{
_arg1.collisionRadius = radius;
}
override public function parseXML(_arg1:XML, _arg2:XMLBuilder=null):void{
super.parseXML(_arg1, _arg2);
radius = parseFloat(_arg1.@radius);
}
override public function getXMLTagName():String{
return ("CollisionRadius");
}
override public function toXML():XML{
var _local1:XML = super.toXML();
_local1.@radius = radius;
return (_local1);
}
}
}//package idv.cjcat.stardust.common.initializers
Section 69
//Color (idv.cjcat.stardust.common.initializers.Color)
package idv.cjcat.stardust.common.initializers {
import idv.cjcat.stardust.common.xml.*;
import idv.cjcat.stardust.common.particles.*;
public class Color extends Initializer {
public var color:uint;
public function Color(_arg1:uint=0xFFFFFF){
this.color = _arg1;
}
override public function initialize(_arg1:Particle):void{
_arg1.color = color;
}
override public function parseXML(_arg1:XML, _arg2:XMLBuilder=null):void{
super.parseXML(_arg1, _arg2);
color = parseInt(_arg1.@color, 16);
}
override public function getXMLTagName():String{
return ("Color");
}
override public function toXML():XML{
var _local1:XML = super.toXML();
_local1.@color = color.toString(16);
return (_local1);
}
}
}//package idv.cjcat.stardust.common.initializers
Section 70
//CommonInitializerPriority (idv.cjcat.stardust.common.initializers.CommonInitializerPriority)
package idv.cjcat.stardust.common.initializers {
public class CommonInitializerPriority extends InitializerPriority {
private static var _instance:CommonInitializerPriority;
final override protected function populatePriorities():void{
priorities[Mask] = 1;
}
public static function getInstance():CommonInitializerPriority{
if (!_instance){
_instance = new (CommonInitializerPriority);
};
return (_instance);
}
}
}//package idv.cjcat.stardust.common.initializers
Section 71
//CompositeInitializer (idv.cjcat.stardust.common.initializers.CompositeInitializer)
package idv.cjcat.stardust.common.initializers {
import flash.events.*;
import idv.cjcat.stardust.common.xml.*;
import idv.cjcat.stardust.common.particles.*;
import idv.cjcat.stardust.common.events.*;
public class CompositeInitializer extends Initializer implements InitializerCollector {
protected var initializers:Array;
public function CompositeInitializer(){
initializers = [];
}
public function addInitializer(_arg1:Initializer):void{
if (initializers.indexOf(_arg1) < 0){
initializers.push(_arg1);
};
_arg1.addEventListener(InitializerEvent.PRIORITY_CHANGE, sortInitializers);
sortInitializers();
}
override public function getXMLTagName():String{
return ("CompositeInitializer");
}
override public function parseXML(_arg1:XML, _arg2:XMLBuilder=null):void{
var _local3:XML;
super.parseXML(_arg1, _arg2);
clearInitializers();
for each (_local3 in _arg1.initializers.*) {
addInitializer((_arg2.getElementByName(_local3.@name) as Initializer));
};
}
public function clearInitializers():void{
var _local1:Initializer;
for each (_local1 in initializers) {
removeInitializer(_local1);
};
}
final public function sortInitializers(_arg1:Event=null):void{
initializers.sortOn("priority", (Array.NUMERIC | Array.DESCENDING));
}
override public function initialize(_arg1:Particle):void{
var _local2:Initializer;
for each (_local2 in initializers) {
_local2.doInitialize(_arg1);
};
}
public function removeInitializer(_arg1:Initializer):void{
var _local2:int;
_local2 = initializers.indexOf(_arg1);
if (_local2 >= 0){
_arg1 = (initializers.splice(_local2, 1)[0] as Initializer);
_arg1.removeEventListener(InitializerEvent.PRIORITY_CHANGE, sortInitializers);
};
}
override public function toXML():XML{
var _local2:Initializer;
var _local1:XML = super.toXML();
if (initializers.length > 0){
_local1.appendChild(<initializers/>
);
for each (_local2 in initializers) {
_local1.initializers.appendChild(_local2.getXMLTag());
};
};
return (_local1);
}
override public function getRelatedObjects():Array{
return (initializers);
}
}
}//package idv.cjcat.stardust.common.initializers
Section 72
//Initializer (idv.cjcat.stardust.common.initializers.Initializer)
package idv.cjcat.stardust.common.initializers {
import flash.events.*;
import idv.cjcat.stardust.common.xml.*;
import idv.cjcat.stardust.common.*;
import idv.cjcat.stardust.common.particles.*;
import idv.cjcat.stardust.common.events.*;
public class Initializer extends StardustElement implements IEventDispatcher {
private var _priority:int;
protected var _supports3D:Boolean;
public var active:Boolean;
private var _eventDispatcher:EventDispatcher;
protected var _supports2D:Boolean;
public function Initializer(){
_supports2D = (_supports3D = true);
_eventDispatcher = new EventDispatcher(this);
priority = CommonInitializerPriority.getInstance().getPriority((Object(this).constructor as Class));
active = true;
}
public function dispatchEvent(_arg1:Event):Boolean{
return (_eventDispatcher.dispatchEvent(_arg1));
}
final public function doInitialize(_arg1:Particle):void{
if (!active){
return;
};
initialize(_arg1);
}
public function set priority(_arg1:int):void{
_priority = _arg1;
dispatchEvent(new InitializerEvent(InitializerEvent.PRIORITY_CHANGE, this));
}
public function removeEventListener(_arg1:String, _arg2:Function, _arg3:Boolean=false):void{
_eventDispatcher.removeEventListener(_arg1, _arg2, _arg3);
}
public function addEventListener(_arg1:String, _arg2:Function, _arg3:Boolean=false, _arg4:int=0, _arg5:Boolean=false):void{
_eventDispatcher.addEventListener(_arg1, _arg2, _arg3, _arg4, _arg5);
}
public function initialize(_arg1:Particle):void{
}
override public function getElementTypeXMLTag():XML{
return (<initializers/>
);
}
public function get supports2D():Boolean{
return (_supports2D);
}
override public function parseXML(_arg1:XML, _arg2:XMLBuilder=null):void{
super.parseXML(_arg1, _arg2);
active = (_arg1.@active == "true");
}
public function willTrigger(_arg1:String):Boolean{
return (_eventDispatcher.willTrigger(_arg1));
}
override public function toXML():XML{
var _local1:XML = super.toXML();
_local1.@active = active;
return (_local1);
}
public function get priority():int{
return (_priority);
}
override public function getXMLTagName():String{
return ("Initializer");
}
public function hasEventListener(_arg1:String):Boolean{
return (_eventDispatcher.hasEventListener(_arg1));
}
public function get supports3D():Boolean{
return (_supports3D);
}
}
}//package idv.cjcat.stardust.common.initializers
Section 73
//InitializerCollection (idv.cjcat.stardust.common.initializers.InitializerCollection)
package idv.cjcat.stardust.common.initializers {
import flash.events.*;
import idv.cjcat.stardust.common.events.*;
import idv.cjcat.stardust.*;
public class InitializerCollection implements InitializerCollector {
sd var initializers:Array;
public function InitializerCollection(){
initializers = [];
}
final public function addInitializer(_arg1:Initializer):void{
if (initializers.indexOf(_arg1) < 0){
initializers.push(_arg1);
};
_arg1.addEventListener(InitializerEvent.PRIORITY_CHANGE, sortInitializers);
sortInitializers();
}
final public function clearInitializers():void{
var _local1:Initializer;
for each (_local1 in initializers) {
removeInitializer(_local1);
};
}
final public function removeInitializer(_arg1:Initializer):void{
var _local2:int;
_local2 = initializers.indexOf(_arg1);
if (_local2 >= 0){
_arg1 = (initializers.splice(_local2, 1)[0] as Initializer);
_arg1.removeEventListener(InitializerEvent.PRIORITY_CHANGE, sortInitializers);
};
}
final public function sortInitializers(_arg1:Event=null):void{
initializers.sortOn("priority", (Array.NUMERIC | Array.DESCENDING));
}
}
}//package idv.cjcat.stardust.common.initializers
Section 74
//InitializerCollector (idv.cjcat.stardust.common.initializers.InitializerCollector)
package idv.cjcat.stardust.common.initializers {
public interface InitializerCollector {
function addInitializer(_arg1:Initializer):void;
function clearInitializers():void;
function removeInitializer(_arg1:Initializer):void;
}
}//package idv.cjcat.stardust.common.initializers
Section 75
//InitializerPriority (idv.cjcat.stardust.common.initializers.InitializerPriority)
package idv.cjcat.stardust.common.initializers {
import flash.utils.*;
public class InitializerPriority {
protected var priorities:Dictionary;
private static var _instance:InitializerPriority;
public function InitializerPriority(){
priorities = new Dictionary();
populatePriorities();
}
public function getPriority(_arg1:Class):int{
if (priorities[_arg1] == undefined){
return (0);
};
return (priorities[_arg1]);
}
protected function populatePriorities():void{
}
public static function getInstance():InitializerPriority{
if (!_instance){
_instance = new (InitializerPriority);
};
return (_instance);
}
}
}//package idv.cjcat.stardust.common.initializers
Section 76
//Life (idv.cjcat.stardust.common.initializers.Life)
package idv.cjcat.stardust.common.initializers {
import idv.cjcat.stardust.common.xml.*;
import idv.cjcat.stardust.common.particles.*;
import idv.cjcat.stardust.common.math.*;
public class Life extends Initializer {
private var _random:Random;
public function Life(_arg1:Random=null){
this.random = _arg1;
}
override public function initialize(_arg1:Particle):void{
_arg1.initLife = (_arg1.life = random.random());
}
override public function parseXML(_arg1:XML, _arg2:XMLBuilder=null):void{
super.parseXML(_arg1, _arg2);
random = (_arg2.getElementByName(_arg1.@random) as Random);
}
public function set random(_arg1:Random):void{
if (!_arg1){
_arg1 = new UniformRandom(0, 0);
};
_random = _arg1;
}
public function get random():Random{
return (_random);
}
override public function getXMLTagName():String{
return ("Life");
}
override public function toXML():XML{
var _local1:XML = super.toXML();
_local1.@random = _random.name;
return (_local1);
}
override public function getRelatedObjects():Array{
return ([_random]);
}
}
}//package idv.cjcat.stardust.common.initializers
Section 77
//Mask (idv.cjcat.stardust.common.initializers.Mask)
package idv.cjcat.stardust.common.initializers {
import idv.cjcat.stardust.common.xml.*;
import idv.cjcat.stardust.common.particles.*;
public class Mask extends Initializer {
private var _mask:int;
public function Mask(_arg1:int=1){
_mask = _arg1;
}
override public function initialize(_arg1:Particle):void{
_arg1.mask = _mask;
}
override public function parseXML(_arg1:XML, _arg2:XMLBuilder=null):void{
super.parseXML(_arg1, _arg2);
mask = parseInt(_arg1.@mask);
}
override public function getXMLTagName():String{
return ("Mask");
}
public function set mask(_arg1:int):void{
if (_arg1 < 0){
_arg1 = 0;
};
_mask = _arg1;
}
public function get mask():int{
return (_mask);
}
override public function toXML():XML{
var _local1:XML = super.toXML();
_local1.@mask = mask;
return (_local1);
}
}
}//package idv.cjcat.stardust.common.initializers
Section 78
//Mass (idv.cjcat.stardust.common.initializers.Mass)
package idv.cjcat.stardust.common.initializers {
import idv.cjcat.stardust.common.xml.*;
import idv.cjcat.stardust.common.particles.*;
import idv.cjcat.stardust.common.math.*;
public class Mass extends Initializer {
private var _random:Random;
public function Mass(_arg1:Random=null){
this.random = _arg1;
}
override public function initialize(_arg1:Particle):void{
_arg1.mass = random.random();
}
override public function parseXML(_arg1:XML, _arg2:XMLBuilder=null):void{
super.parseXML(_arg1, _arg2);
random = (_arg2.getElementByName(_arg1.@random) as Random);
}
public function set random(_arg1:Random):void{
if (!_arg1){
_arg1 = new UniformRandom(1, 0);
};
_random = _arg1;
}
public function get random():Random{
return (_random);
}
override public function getXMLTagName():String{
return ("Mass");
}
override public function toXML():XML{
var _local1:XML = super.toXML();
_local1.@random = random.name;
return (_local1);
}
override public function getRelatedObjects():Array{
return ([_random]);
}
}
}//package idv.cjcat.stardust.common.initializers
Section 79
//Scale (idv.cjcat.stardust.common.initializers.Scale)
package idv.cjcat.stardust.common.initializers {
import idv.cjcat.stardust.common.xml.*;
import idv.cjcat.stardust.common.particles.*;
import idv.cjcat.stardust.common.math.*;
public class Scale extends Initializer {
private var _random:Random;
public function Scale(_arg1:Random=null){
this.random = _arg1;
}
override public function initialize(_arg1:Particle):void{
_arg1.initScale = (_arg1.scale = random.random());
}
override public function parseXML(_arg1:XML, _arg2:XMLBuilder=null):void{
super.parseXML(_arg1, _arg2);
random = (_arg2.getElementByName(_arg1.@random) as Random);
}
public function set random(_arg1:Random):void{
if (!_arg1){
_arg1 = new UniformRandom(1, 0);
};
_random = _arg1;
}
public function get random():Random{
return (_random);
}
override public function getXMLTagName():String{
return ("Scale");
}
override public function toXML():XML{
var _local1:XML = super.toXML();
_local1.@random = _random.name;
return (_local1);
}
override public function getRelatedObjects():Array{
return ([_random]);
}
}
}//package idv.cjcat.stardust.common.initializers
Section 80
//SwitchInitializer (idv.cjcat.stardust.common.initializers.SwitchInitializer)
package idv.cjcat.stardust.common.initializers {
import idv.cjcat.stardust.common.xml.*;
import idv.cjcat.stardust.common.particles.*;
import idv.cjcat.stardust.common.utils.*;
public class SwitchInitializer extends Initializer {
private var collection:WeightedCollection;
public function SwitchInitializer(_arg1:Array=null, _arg2:Array=null){
if (((!(_arg1)) || (!(_arg2)))){
_arg1 = [];
_arg2 = [];
};
setInitializers(_arg1, _arg2);
}
override public function initialize(_arg1:Particle):void{
var _local2:Initializer = (collection.get() as Initializer);
_local2.initialize(_arg1);
}
public function setInitializers(_arg1:Array, _arg2:Array):void{
collection = new WeightedCollection(_arg1, _arg2);
}
override public function getXMLTagName():String{
return ("SwitchInitializer");
}
override public function parseXML(_arg1:XML, _arg2:XMLBuilder=null):void{
var _local3:XML;
var _local4:Initializer;
var _local5:Number;
super.parseXML(_arg1, _arg2);
collection.clear();
for each (_local3 in _arg1.initializers.*) {
_local4 = (_arg2.getElementByName(_local3.@name) as Initializer);
_local5 = parseFloat(_local3.@weight);
collection.addContent(_local4, _local5);
};
}
override public function toXML():XML{
var _local3:Array;
var _local4:int;
var _local5:XML;
var _local1:XML = super.toXML();
var _local2:Array = collection.contents;
if (_local2.length > 0){
_local3 = collection.weights;
_local1.appendChild(<initializers/>
);
_local4 = 0;
while (_local4 < _local2.length) {
_local5 = Initializer(_local2[_local4]).getXMLTag();
_local5.@weight = _local3[_local4];
_local1.initializers.appendChild(_local5);
_local4++;
};
};
return (_local1);
}
override public function getRelatedObjects():Array{
return (collection.contents);
}
}
}//package idv.cjcat.stardust.common.initializers
Section 81
//AveragedRandom (idv.cjcat.stardust.common.math.AveragedRandom)
package idv.cjcat.stardust.common.math {
import idv.cjcat.stardust.common.xml.*;
public class AveragedRandom extends Random {
public var randomObj:Random;
public var sampleCount:int;
public function AveragedRandom(_arg1:Random=null, _arg2:int=3){
this.randomObj = _arg1;
this.sampleCount = _arg2;
}
override public function random():Number{
if (!randomObj){
return (0);
};
var _local1:Number = 0;
var _local2:int;
while (_local2 < sampleCount) {
_local1 = (_local1 + randomObj.random());
_local2++;
};
return ((_local1 / sampleCount));
}
override public function parseXML(_arg1:XML, _arg2:XMLBuilder=null):void{
super.parseXML(_arg1, _arg2);
randomObj = (_arg2.getElementByName(_arg1.@randomObj) as Random);
sampleCount = parseInt(_arg1.@sampleCount);
}
override public function getXMLTagName():String{
return ("AveragedRandom");
}
override public function toXML():XML{
var _local1:XML = super.toXML();
_local1.@randomObj = randomObj.name;
_local1.@sampleCount = sampleCount;
return (_local1);
}
override public function getRelatedObjects():Array{
return ([randomObj]);
}
}
}//package idv.cjcat.stardust.common.math
Section 82
//Random (idv.cjcat.stardust.common.math.Random)
package idv.cjcat.stardust.common.math {
import idv.cjcat.stardust.common.*;
public class Random extends StardustElement {
override public function getElementTypeXMLTag():XML{
return (<randoms/>
);
}
override public function getXMLTagName():String{
return ("Random");
}
public function getRange():Array{
return ([0.5, 0.5]);
}
public function random():Number{
return (0.5);
}
public function setRange(_arg1:Number, _arg2:Number):void{
}
}
}//package idv.cjcat.stardust.common.math
Section 83
//StardustMath (idv.cjcat.stardust.common.math.StardustMath)
package idv.cjcat.stardust.common.math {
public class StardustMath {
public static const HALF_PI:Number = 1.5707963267949;
public static const TWO_PI:Number = 6.28318530717959;
public static const RADIAN_TO_DEGREE:Number = 57.2957795130823;
public static const DEGREE_TO_RADIAN:Number = 0.0174532925199433;
public static function interpolate(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number):Number{
return ((_arg2 - (((_arg2 - _arg4) * (_arg1 - _arg5)) / (_arg1 - _arg3))));
}
public static function mod(_arg1:Number, _arg2:Number):Number{
var _local3:Number = (_arg1 % _arg2);
return (((_local3)<0) ? (_local3 + _arg2) : _local3);
}
public static function randomFloor(_arg1:Number):int{
var _local2 = (_arg1 | 0);
return ((_local2 + int((((_arg1 - _local2))>Math.random()) ? 1 : 0)));
}
public static function clamp(_arg1:Number, _arg2:Number, _arg3:Number):Number{
if (_arg1 < _arg2){
return (_arg2);
};
if (_arg1 > _arg3){
return (_arg3);
};
return (_arg1);
}
}
}//package idv.cjcat.stardust.common.math
Section 84
//UniformRandom (idv.cjcat.stardust.common.math.UniformRandom)
package idv.cjcat.stardust.common.math {
import idv.cjcat.stardust.common.xml.*;
public class UniformRandom extends Random {
public var radius:Number;
public var center:Number;
public function UniformRandom(_arg1:Number=0.5, _arg2:Number=0){
this.center = _arg1;
this.radius = _arg2;
}
override public function random():Number{
if (radius){
return ((((radius * 2) * (Math.random() - 0.5)) + center));
};
return (center);
}
override public function getXMLTagName():String{
return ("UniformRandom");
}
override public function getRange():Array{
return ([(center - radius), (center + radius)]);
}
override public function parseXML(_arg1:XML, _arg2:XMLBuilder=null):void{
super.parseXML(_arg1, _arg2);
center = parseFloat(_arg1.@center);
radius = parseFloat(_arg1.@radius);
}
override public function toXML():XML{
var _local1:XML = super.toXML();
_local1.@center = center;
_local1.@radius = radius;
return (_local1);
}
override public function setRange(_arg1:Number, _arg2:Number):void{
var _local3:Number = (_arg2 - _arg1);
radius = (0.5 * _local3);
center = (_arg1 + radius);
}
}
}//package idv.cjcat.stardust.common.math
Section 85
//Particle (idv.cjcat.stardust.common.particles.Particle)
package idv.cjcat.stardust.common.particles {
import flash.utils.*;
public class Particle {
public var scale:Number;
public var target;
public var sortedIndex:int;
public var dictionary:Dictionary;
public var initScale:Number;
public var alpha:Number;
public var collisionRadius:Number;
public var color:uint;
public var initLife:Number;
public var initAlpha:Number;
public var mask:int;
public var isDead:Boolean;
public var mass:Number;
public var life:Number;
public function Particle(){
dictionary = new Dictionary();
}
public function destroy():void{
var _local1:*;
target = null;
for (_local1 in dictionary) {
delete dictionary[_local1];
};
}
public function init():void{
initLife = (life = 0);
initScale = (scale = 1);
initAlpha = (alpha = 1);
mass = 1;
mask = 1;
isDead = false;
collisionRadius = 0;
target = null;
color = 0;
sortedIndex = NaN;
}
}
}//package idv.cjcat.stardust.common.particles
Section 86
//ParticleFactory (idv.cjcat.stardust.common.particles.ParticleFactory)
package idv.cjcat.stardust.common.particles {
import idv.cjcat.stardust.common.initializers.*;
import idv.cjcat.stardust.*;
public class ParticleFactory implements InitializerCollector {
sd var initializerCollection:InitializerCollection;
sd var particlePool:ParticlePool;
sd var usePool:Boolean;
public function ParticleFactory(){
usePool = false;
particlePool = ParticlePool.getInstance();
initializerCollection = new InitializerCollection();
}
public function addInitializer(_arg1:Initializer):void{
initializerCollection.addInitializer(_arg1);
}
final public function removeInitializer(_arg1:Initializer):void{
initializerCollection.removeInitializer(_arg1);
}
final public function clearInitializers():void{
initializerCollection.clearInitializers();
}
final public function createParticles(_arg1:int):Array{
var _local3:int;
var _local4:Particle;
var _local5:Initializer;
var _local2:Array = [];
if (usePool){
_local3 = 0;
while (_local3 < _arg1) {
_local4 = particlePool.get();
_local4.init();
for each (_local5 in initializerCollection.initializers) {
_local5.doInitialize(_local4);
};
_local2.push(_local4);
_local3++;
};
} else {
_local3 = 0;
while (_local3 < _arg1) {
_local4 = new particlePool.particleClass();
_local4.init();
for each (_local5 in initializerCollection.initializers) {
_local5.doInitialize(_local4);
};
_local2.push(_local4);
_local3++;
};
};
return (_local2);
}
}
}//package idv.cjcat.stardust.common.particles
Section 87
//ParticlePool (idv.cjcat.stardust.common.particles.ParticlePool)
package idv.cjcat.stardust.common.particles {
import idv.cjcat.stardust.*;
public class ParticlePool {
sd var particleClass:Class;
private var _position:int;
private var _array:Array;
private static var _instance:ParticlePool;
public function ParticlePool(_arg1:Class){
this.particleClass = _arg1;
_array = [new (_arg1)];
_position = 0;
}
final public function recycle(_arg1:Particle):void{
if (_position == 0){
return;
};
_array[(_position - 1)] = _arg1;
_position--;
if (_position < 0){
_position = 0;
};
if (_array.length >= 16){
if (_position < (_array.length >> 4)){
_array.length = (_array.length >> 1);
};
};
}
final public function get():Particle{
var _local1:int;
if (_position == _array.length){
_array.length = (_array.length << 1);
_local1 = _position;
while (_local1 < _array.length) {
_array[_local1] = new particleClass();
_local1++;
};
};
_position++;
return ((_array[(_position - 1)] as Particle));
}
public static function getInstance():ParticlePool{
if (!_instance){
_instance = new ParticlePool(Particle);
};
return (_instance);
}
}
}//package idv.cjcat.stardust.common.particles
Section 88
//ParticleSorter (idv.cjcat.stardust.common.particles.ParticleSorter)
package idv.cjcat.stardust.common.particles {
public class ParticleSorter {
private static var _instance:ParticleSorter;
public function sort(_arg1:Array):void{
}
public static function getInstane():ParticleSorter{
if (!_instance){
_instance = new (ParticleSorter);
};
return (_instance);
}
}
}//package idv.cjcat.stardust.common.particles
Section 89
//Renderer (idv.cjcat.stardust.common.renderers.Renderer)
package idv.cjcat.stardust.common.renderers {
import idv.cjcat.stardust.common.xml.*;
import idv.cjcat.stardust.common.*;
import idv.cjcat.stardust.common.events.*;
import idv.cjcat.stardust.common.emitters.*;
public class Renderer extends StardustElement {
private var _emitters:Array;
public function Renderer(){
_emitters = [];
}
override public function getElementTypeXMLTag():XML{
return (<renderers/>
);
}
override public function parseXML(_arg1:XML, _arg2:XMLBuilder=null):void{
var _local3:XML;
super.parseXML(_arg1, _arg2);
clearEmitters();
for each (_local3 in _arg1.emitters.*) {
addEmitter((_arg2.getElementByName(_local3.@name) as Emitter));
};
}
final public function get numParticles():int{
var _local2:Emitter;
var _local1:int;
for each (_local2 in _emitters) {
_local1 = (_local1 + _local2.numParticles);
};
return (_local1);
}
final public function removeEmitter(_arg1:Emitter):void{
var _local2:int = _emitters.indexOf(_arg1);
if (_local2 >= 0){
_emitters.splice(_local2, 1);
_arg1.removeEventListener(EmitterEvent.PARTICLES_ADDED, particlesCreated);
_arg1.removeEventListener(EmitterEvent.PARTICLES_REMOVED, particlesCreated);
_arg1.removeEventListener(EmitterEvent.STEPPED, render);
};
}
override public function getXMLTagName():String{
return ("Renderer");
}
final public function addEmitter(_arg1:Emitter):void{
if (_emitters.indexOf(_arg1) < 0){
_arg1.addEventListener(EmitterEvent.PARTICLES_ADDED, particlesCreated);
_arg1.addEventListener(EmitterEvent.PARTICLES_REMOVED, particlesRemoved);
_arg1.addEventListener(EmitterEvent.STEPPED, render);
_emitters.push(_arg1);
};
}
final public function clearEmitters():void{
var _local1:Emitter;
for each (_local1 in _emitters) {
removeEmitter(_local1);
};
}
protected function render(_arg1:EmitterEvent):void{
}
protected function particlesRemoved(_arg1:EmitterEvent):void{
}
protected function particlesCreated(_arg1:EmitterEvent):void{
}
override public function toXML():XML{
var _local2:Emitter;
var _local1:XML = super.toXML();
if (_emitters.length > 0){
_local1.appendChild(<emitters/>
);
for each (_local2 in _emitters) {
_local1.emitters.appendChild(_local2.getXMLTag());
};
};
return (_local1);
}
override public function getRelatedObjects():Array{
return (_emitters);
}
}
}//package idv.cjcat.stardust.common.renderers
Section 90
//construct (idv.cjcat.stardust.common.utils.construct)
package idv.cjcat.stardust.common.utils {
import flash.errors.*;
public function construct(_arg1:Class, _arg2:Array=null){
if (!_arg2){
return (new (_arg1));
};
switch (_arg2.length){
case 0:
return (new (_arg1));
case 1:
return (new _arg1(_arg2[0]));
case 2:
return (new _arg1(_arg2[0], _arg2[1]));
case 3:
return (new _arg1(_arg2[0], _arg2[1], _arg2[2]));
case 4:
return (new _arg1(_arg2[0], _arg2[1], _arg2[2], _arg2[3]));
case 5:
return (new _arg1(_arg2[0], _arg2[1], _arg2[2], _arg2[3], _arg2[4]));
case 6:
return (new _arg1(_arg2[0], _arg2[1], _arg2[2], _arg2[3], _arg2[4], _arg2[5]));
case 7:
return (new _arg1(_arg2[0], _arg2[1], _arg2[2], _arg2[3], _arg2[4], _arg2[5], _arg2[6]));
case 8:
return (new _arg1(_arg2[0], _arg2[1], _arg2[2], _arg2[3], _arg2[4], _arg2[5], _arg2[6], _arg2[7]));
case 9:
return (new _arg1(_arg2[0], _arg2[1], _arg2[2], _arg2[3], _arg2[4], _arg2[5], _arg2[6], _arg2[7], _arg2[8]));
case 10:
return (new _arg1(_arg2[0], _arg2[1], _arg2[2], _arg2[3], _arg2[4], _arg2[5], _arg2[6], _arg2[7], _arg2[8], _arg2[9]));
default:
throw (new IllegalOperationError("The number of parameters given exceeds the maximum number this method can handle."));
};
}
}//package idv.cjcat.stardust.common.utils
Section 91
//WeightedCollection (idv.cjcat.stardust.common.utils.WeightedCollection)
package idv.cjcat.stardust.common.utils {
public class WeightedCollection {
private var _weights:Array;
private var _accumulatedWeights:Array;
private var _contents:Array;
private var totalWeight:Number;
public function WeightedCollection(_arg1:Array, _arg2:Array){
clear();
var _local3:int;
while (_local3 < _arg1.length) {
addContent(_arg1[_local3], _arg2[_local3]);
_local3++;
};
}
public function clear():void{
_contents = [];
_weights = [];
_accumulatedWeights = [];
totalWeight = 0;
}
public function get(){
if (_contents.length == 1){
return (_contents[0]);
};
if (_contents.length == 0){
return (null);
};
var _local1:int;
var _local2:Number = (totalWeight * Math.random());
while (_accumulatedWeights[_local1] < _local2) {
_local1++;
};
return (_contents[_local1]);
}
public function addContent(_arg1, _arg2:Number):void{
_contents.push(_arg1);
_weights.push(_arg2);
_accumulatedWeights.push((totalWeight + _arg2));
totalWeight = (totalWeight + _arg2);
}
public function get contents():Array{
return (_contents.concat());
}
public function get weights():Array{
return (_weights.concat());
}
}
}//package idv.cjcat.stardust.common.utils
Section 92
//ClassPackage (idv.cjcat.stardust.common.xml.ClassPackage)
package idv.cjcat.stardust.common.xml {
public class ClassPackage {
protected var classes:Array;
private static var _instance:ClassPackage;
public function ClassPackage(){
classes = [];
populateClasses();
}
final public function getClasses():Array{
return (classes.concat());
}
protected function populateClasses():void{
}
public static function getInstance():ClassPackage{
if (_instance){
_instance = new (ClassPackage);
};
return (_instance);
}
}
}//package idv.cjcat.stardust.common.xml
Section 93
//XMLBuilder (idv.cjcat.stardust.common.xml.XMLBuilder)
package idv.cjcat.stardust.common.xml {
import idv.cjcat.stardust.common.*;
import flash.utils.*;
import idv.cjcat.stardust.threeD.*;
import idv.cjcat.stardust.twoD.*;
import idv.cjcat.stardust.*;
import idv.cjcat.stardust.common.errors.*;
import flash.errors.*;
public class XMLBuilder {
private var elements:Dictionary;
private var elementClasses:Dictionary;
public function XMLBuilder(){
elementClasses = new Dictionary();
elements = new Dictionary();
registerClasseFromClassPackage(CommonClassPackage.getInstance());
registerClasseFromClassPackage(TwoDClassPackage.getInstance());
registerClasseFromClassPackage(ThreeDClassPackage.getInstance());
}
public function registerClasses(_arg1:Array):void{
var _local2:Class;
for each (_local2 in _arg1) {
registerClass(_local2);
};
}
public function registerClass(_arg1:Class):void{
var _local2:StardustElement = (new (_arg1) as StardustElement);
if (!_local2){
throw (new IllegalOperationError("The class is not a subclass of the StardustElement class."));
};
if (elementClasses[_local2.getXMLTagName()] != undefined){
throw (new IllegalOperationError(("This element class name is already registered: " + _local2.getXMLTagName())));
};
elementClasses[_local2.getXMLTagName()] = _arg1;
}
public function buildFromXML(_arg1:XML):void{
var _local2:StardustElement;
var _local3:XML;
var _local4:*;
if (elements){
for (_local4 in elements) {
delete elements[_local4];
};
};
elements = new Dictionary();
for each (_local3 in _arg1.*.*) {
_local2 = (new (elementClasses[_local3.name()]) as StardustElement);
if (elements[_local3.@name] != undefined){
throw (new DuplicateElementNameError(("Duplicate element name: " + _local3.@name), _local3.@name, elements[_local3.@name], _local2));
};
elements[_local3.@name.toString()] = _local2;
};
for each (_local3 in _arg1.*.*) {
_local2 = (elements[_local3.@name.toString()] as StardustElement);
_local2.parseXML(_local3, this);
};
}
public function registerClasseFromClassPackage(_arg1:ClassPackage):void{
registerClasses(_arg1.getClasses());
}
public function unregisterClass(_arg1:String):void{
delete elementClasses[_arg1];
}
public function getElementByName(_arg1:String):StardustElement{
if (elements[_arg1] == undefined){
throw (new IllegalOperationError(("Element not found: " + _arg1)));
};
return (elements[_arg1]);
}
private static function elementTypeSorter(_arg1:StardustElement, _arg2:StardustElement):Number{
if (_arg1.getElementTypeXMLTag().name() > _arg2.getElementTypeXMLTag().name()){
return (1);
};
if (_arg1.getElementTypeXMLTag().name() < _arg2.getElementTypeXMLTag().name()){
return (-1);
};
if (_arg1.getXMLTagName() > _arg2.getXMLTagName()){
return (1);
};
if (_arg1.getXMLTagName() < _arg2.getXMLTagName()){
return (-1);
};
if (_arg1.name > _arg2.name){
return (1);
};
return (-1);
}
public static function buildXML(_arg1:StardustElement):XML{
var _local6:XML;
var _local7:XML;
var _local2:Dictionary = new Dictionary();
var _local3:XML = <StardustParticleSystem/>
;
_local3.@version = Stardust.VERSION;
var _local4:Dictionary = new Dictionary();
traverseRelatedObjects(_arg1, _local4);
var _local5:Array = [];
for each (_arg1 in _local4) {
_local5.push(_arg1);
};
_local5.sort(elementTypeSorter);
for each (_arg1 in _local5) {
_local6 = _arg1.toXML();
_local7 = _arg1.getElementTypeXMLTag();
if (_local3[_local7.name()].length() == 0){
_local3.appendChild(_local7);
};
_local3[_local7.name()].appendChild(_local6);
};
return (_local3);
}
private static function traverseRelatedObjects(_arg1:StardustElement, _arg2:Dictionary):void{
var _local3:StardustElement;
if (_arg2[_arg1.name] != undefined){
if (_arg2[_arg1.name] != _arg1){
throw (new DuplicateElementNameError(("Duplicate element name: " + _arg1.name), _arg1.name, _arg2[_arg1.name], _arg1));
};
} else {
_arg2[_arg1.name] = _arg1;
};
for each (_local3 in _arg1.getRelatedObjects()) {
traverseRelatedObjects(_local3, _arg2);
};
}
}
}//package idv.cjcat.stardust.common.xml
Section 94
//XMLConvertible (idv.cjcat.stardust.common.xml.XMLConvertible)
package idv.cjcat.stardust.common.xml {
public interface XMLConvertible {
function parseXML(_arg1:XML, _arg2:XMLBuilder=null):void;
function toXML():XML;
}
}//package idv.cjcat.stardust.common.xml
Section 95
//CommonClassPackage (idv.cjcat.stardust.common.CommonClassPackage)
package idv.cjcat.stardust.common {
import idv.cjcat.stardust.common.initializers.*;
import idv.cjcat.stardust.common.actions.*;
import idv.cjcat.stardust.common.xml.*;
import idv.cjcat.stardust.common.clocks.*;
import idv.cjcat.stardust.common.emitters.*;
import idv.cjcat.stardust.common.math.*;
import idv.cjcat.stardust.common.actions.triggers.*;
public class CommonClassPackage extends ClassPackage {
private static var _instance:CommonClassPackage;
final override protected function populateClasses():void{
classes.push(AlphaCurve);
classes.push(CompositeAction);
classes.push(DeathLife);
classes.push(Die);
classes.push(ScaleCurve);
classes.push(DeathTrigger);
classes.push(LifeTrigger);
classes.push(CompositeClock);
classes.push(ImpulseClock);
classes.push(RandomClock);
classes.push(SteadyClock);
classes.push(Emitter);
classes.push(Age);
classes.push(Alpha);
classes.push(CollisionRadius);
classes.push(Color);
classes.push(CompositeInitializer);
classes.push(Life);
classes.push(Mask);
classes.push(Mass);
classes.push(Scale);
classes.push(SwitchInitializer);
classes.push(AveragedRandom);
classes.push(UniformRandom);
}
public static function getInstance():CommonClassPackage{
if (!_instance){
_instance = new (CommonClassPackage);
};
return (_instance);
}
}
}//package idv.cjcat.stardust.common
Section 96
//StardustElement (idv.cjcat.stardust.common.StardustElement)
package idv.cjcat.stardust.common {
import idv.cjcat.stardust.common.xml.*;
import flash.utils.*;
public class StardustElement implements XMLConvertible {
public var name:String;
private static var elementCounter:Dictionary = new Dictionary();
public function StardustElement(){
var _local1:String = getXMLTagName();
if (elementCounter[_local1] == undefined){
elementCounter[_local1] = 0;
} else {
var _local2 = elementCounter;
var _local3 = _local1;
var _local4 = (_local2[_local3] + 1);
_local2[_local3] = _local4;
};
this.name = ((_local1 + "_") + elementCounter[_local1]);
}
public function parseXML(_arg1:XML, _arg2:XMLBuilder=null):void{
name = _arg1.@name;
}
public function getXMLTagName():String{
return ("StardustElement");
}
final public function getXMLTag():XML{
var _local1:XML = XML((("<" + getXMLTagName()) + "/>"));
_local1.@name = name;
return (_local1);
}
public function getElementTypeXMLTag():XML{
return (<elements/>
);
}
public function toXML():XML{
var _local1:XML = getXMLTag();
return (_local1);
}
public function getRelatedObjects():Array{
return ([]);
}
}
}//package idv.cjcat.stardust.common
Section 97
//ActionTrigger3D (idv.cjcat.stardust.threeD.actions.triggers.ActionTrigger3D)
package idv.cjcat.stardust.threeD.actions.triggers {
import idv.cjcat.stardust.threeD.actions.*;
import idv.cjcat.stardust.common.actions.triggers.*;
public class ActionTrigger3D extends ActionTrigger {
public function ActionTrigger3D(){
_supports2D = false;
priority = Action3DPriority.getInstance().getPriority((Object(this).constructor as Class));
}
override public function getXMLTagName():String{
return ("ActionTrigger3D");
}
}
}//package idv.cjcat.stardust.threeD.actions.triggers
Section 98
//ZoneTrigger3D (idv.cjcat.stardust.threeD.actions.triggers.ZoneTrigger3D)
package idv.cjcat.stardust.threeD.actions.triggers {
import idv.cjcat.stardust.common.xml.*;
import idv.cjcat.stardust.common.particles.*;
import idv.cjcat.stardust.threeD.particles.*;
import idv.cjcat.stardust.common.emitters.*;
import idv.cjcat.stardust.threeD.zones.*;
public class ZoneTrigger3D extends ActionTrigger3D {
private var _zone:Zone3D;
public function ZoneTrigger3D(_arg1:Zone3D=null){
this.zone = _arg1;
}
override public function parseXML(_arg1:XML, _arg2:XMLBuilder=null):void{
super.parseXML(_arg1, _arg2);
zone = (_arg2.getElementByName(_arg1.@zone) as Zone3D);
}
override public function getXMLTagName():String{
return ("ZoneTrigger3D");
}
override public function testTrigger(_arg1:Emitter, _arg2:Particle, _arg3:Number):Boolean{
var _local4:Particle3D = (_arg2 as Particle3D);
return (_zone.contains(_local4.x, _local4.y, _local4.z));
}
public function set zone(_arg1:Zone3D):void{
if (!_arg1){
_arg1 = new SinglePoint3D(0, 0);
};
_zone = _arg1;
}
public function get zone():Zone3D{
return (_zone);
}
override public function toXML():XML{
var _local1:XML = super.toXML();
_local1.@zone = _zone.name;
return (_local1);
}
override public function getRelatedObjects():Array{
return ([_zone]);
}
}
}//package idv.cjcat.stardust.threeD.actions.triggers
Section 99
//Accelerate3D (idv.cjcat.stardust.threeD.actions.Accelerate3D)
package idv.cjcat.stardust.threeD.actions {
import idv.cjcat.stardust.common.xml.*;
import idv.cjcat.stardust.common.particles.*;
import idv.cjcat.stardust.threeD.geom.*;
import idv.cjcat.stardust.threeD.particles.*;
import idv.cjcat.stardust.common.emitters.*;
public class Accelerate3D extends Action3D {
public var acceleration:Number;
public function Accelerate3D(_arg1:Number=0.1){
this.acceleration = _arg1;
}
override public function getXMLTagName():String{
return ("Accelerate3D");
}
override public function parseXML(_arg1:XML, _arg2:XMLBuilder=null):void{
super.parseXML(_arg1, _arg2);
acceleration = parseFloat(_arg1.@acceleration);
}
override public function update(_arg1:Emitter, _arg2:Particle, _arg3:Number):void{
var _local4:Particle3D = (_arg2 as Particle3D);
var _local5:Vec3D = Vec3DPool.get(_local4.vx, _local4.vy, _local4.vz);
if (_local5.length > 0){
_local5.length = (_local5.length + (acceleration * _arg3));
_local4.vx = _local5.x;
_local4.vy = _local5.y;
_local4.vz = _local5.z;
};
Vec3DPool.recycle(_local5);
}
override public function toXML():XML{
var _local1:XML = super.toXML();
_local1.@acceleration = acceleration;
return (_local1);
}
}
}//package idv.cjcat.stardust.threeD.actions
Section 100
//Action3D (idv.cjcat.stardust.threeD.actions.Action3D)
package idv.cjcat.stardust.threeD.actions {
import idv.cjcat.stardust.common.actions.*;
public class Action3D extends Action {
public function Action3D(){
_supports2D = false;
priority = Action3DPriority.getInstance().getPriority((Object(this).constructor as Class));
}
override public function getXMLTagName():String{
return ("Action3D");
}
}
}//package idv.cjcat.stardust.threeD.actions
Section 101
//Action3DPriority (idv.cjcat.stardust.threeD.actions.Action3DPriority)
package idv.cjcat.stardust.threeD.actions {
import idv.cjcat.stardust.common.actions.*;
import idv.cjcat.stardust.threeD.actions.triggers.*;
public class Action3DPriority extends ActionPriority {
private static var _instance:Action3DPriority;
final override protected function populatePriorities():void{
priorities[Damping3D] = -1;
priorities[DeathZone3D] = -1;
priorities[Gravity3D] = -2;
priorities[MutualGravity3D] = -2;
priorities[VelocityField3D] = -3;
priorities[Move3D] = -4;
priorities[Spin3D] = -4;
priorities[Deflect3D] = -5;
priorities[BillboardOriented] = -6;
priorities[Collide3D] = -6;
priorities[DeathZone3D] = -6;
priorities[Oriented3D] = -6;
priorities[ZoneTrigger3D] = -6;
}
public static function getInstance():Action3DPriority{
if (!_instance){
_instance = new (Action3DPriority);
};
return (_instance);
}
}
}//package idv.cjcat.stardust.threeD.actions
Section 102
//BillboardOriented (idv.cjcat.stardust.threeD.actions.BillboardOriented)
package idv.cjcat.stardust.threeD.actions {
import idv.cjcat.stardust.common.xml.*;
import idv.cjcat.stardust.common.particles.*;
import idv.cjcat.stardust.threeD.particles.*;
import idv.cjcat.stardust.common.emitters.*;
import idv.cjcat.stardust.common.math.*;
public class BillboardOriented extends Action3D {
public var offset:Number;
public var factor:Number;
public function BillboardOriented(_arg1:Number=1, _arg2:Number=0){
this.factor = _arg1;
this.offset = _arg2;
}
override public function parseXML(_arg1:XML, _arg2:XMLBuilder=null):void{
super.parseXML(_arg1, _arg2);
factor = parseFloat(_arg1.@factor);
offset = parseFloat(_arg1.@offset);
}
override public function getXMLTagName():String{
return ("BillboardOriented");
}
override public function update(_arg1:Emitter, _arg2:Particle, _arg3:Number):void{
var _local4:Particle3D = (_arg2 as Particle3D);
var _local5:Number = (((Math.atan2(_local4.screenVX, -(_local4.screenVY)) * StardustMath.RADIAN_TO_DEGREE) + offset) - _local4.rotationZ);
_local4.rotationZ = (_local4.rotationZ + (factor * _local5));
}
override public function toXML():XML{
var _local1:XML = super.toXML();
_local1.@factor = factor;
_local1.@offset = offset;
return (_local1);
}
}
}//package idv.cjcat.stardust.threeD.actions
Section 103
//CalculateScreenVelocity (idv.cjcat.stardust.threeD.actions.CalculateScreenVelocity)
package idv.cjcat.stardust.threeD.actions {
import idv.cjcat.stardust.common.particles.*;
import idv.cjcat.stardust.threeD.geom.*;
import idv.cjcat.stardust.threeD.particles.*;
import idv.cjcat.stardust.common.emitters.*;
public class CalculateScreenVelocity extends Action3D {
override public function update(_arg1:Emitter, _arg2:Particle, _arg3:Number):void{
if (_arg2.dictionary["screenVel"] == undefined){
return;
};
var _local4:Vec3D = (_arg2.dictionary["screenVel"] as Vec3D);
var _local5:Particle3D = (_arg2 as Particle3D);
_local5.screenVX = _local4.x;
_local5.screenVY = _local4.y;
}
override public function getXMLTagName():String{
return ("CalculateScreenVelocity");
}
}
}//package idv.cjcat.stardust.threeD.actions
Section 104
//Collide3D (idv.cjcat.stardust.threeD.actions.Collide3D)
package idv.cjcat.stardust.threeD.actions {
import idv.cjcat.stardust.common.particles.*;
import idv.cjcat.stardust.threeD.geom.*;
import idv.cjcat.stardust.threeD.particles.*;
import idv.cjcat.stardust.common.emitters.*;
import idv.cjcat.stardust.*;
public class Collide3D extends MutualAction3D {
public function Collide3D(){
maxDistance = 0;
}
override public function preUpdate(_arg1:Emitter, _arg2:Number):void{
var _local6:Particle;
var _local3:Array = _arg1.sd::particles;
if (_local3.length <= 1){
return;
};
var _local4:Number = 0;
var _local5:Number = 0;
for each (_local6 in _local3) {
if (_local6.collisionRadius > _local4){
_local5 = _local4;
_local4 = (_local6.collisionRadius * _local6.scale);
} else {
if (_local6.collisionRadius > _local5){
_local5 = (_local6.collisionRadius * _local6.scale);
};
};
};
maxDistance = (_local4 + _local5);
}
override protected function doMutualAction(_arg1:Particle3D, _arg2:Particle3D, _arg3:Number):void{
var _local4:Number;
var _local5:Number;
var _local6:Number;
var _local7:Number;
var _local8:Number;
var _local9:Number;
var _local10:Vec3D;
var _local11:Number;
var _local12:Number;
var _local13:Number;
var _local14:Number;
var _local15:Number;
var _local16:Number;
var _local17:Number;
var _local18:Vec3D;
var _local19:Vec3D;
var _local20:Vec3D;
var _local21:Vec3D;
var _local22:Vec3D;
var _local23:Number;
if ((_arg1.mask & _arg2.mask)){
_local4 = (_arg1.x - _arg2.x);
_local5 = (_arg1.y - _arg2.y);
_local6 = (_arg1.z - _arg2.z);
_local7 = (_arg1.collisionRadius * _arg1.scale);
_local8 = (_arg2.collisionRadius * _arg2.scale);
_local9 = (_local7 + _local8);
if ((((_local4 * _local4) + (_local5 * _local5)) + (_local6 * _local6)) > (_local9 * _local9)){
return;
};
_local10 = Vec3DPool.get(_local4, _local5, _local6);
_local11 = (1 / _local9);
_local12 = (((_arg1.x * _local8) + (_arg2.x * _local7)) * _local11);
_local13 = (((_arg1.y * _local8) + (_arg2.y * _local7)) * _local11);
_local14 = (((_arg1.z * _local8) + (_arg2.z * _local7)) * _local11);
_local10.length = _local7;
_arg1.x = (_local12 + _local10.x);
_arg1.y = (_local13 + _local10.y);
_arg1.z = (_local14 + _local10.z);
_local10.length = _local8;
_arg2.x = (_local12 - _local10.x);
_arg2.y = (_local13 - _local10.y);
_arg2.z = (_local14 - _local10.z);
_local15 = (_arg1.mass * _arg1.scale);
_local16 = (_arg2.mass * _arg2.scale);
_local17 = (1 / (_local15 + _local16));
_local18 = Vec3DPool.get(_arg1.vx, _arg1.vy, _arg1.vz);
_local19 = Vec3DPool.get(_arg2.vx, _arg2.vy, _arg2.vz);
_local18.projectThis(_local10);
_local19.projectThis(_local10);
_local20 = Vec3DPool.get((_arg1.vx - _local18.x), (_arg1.vy - _local18.y), (_arg1.vz - _local18.z));
_local21 = Vec3DPool.get((_arg2.vx - _local19.x), (_arg2.vy - _local19.y), (_arg2.vz - _local19.z));
_local22 = Vec3DPool.get((_local18.x - _local19.x), (_local18.y - _local19.y), (_local18.z - _local19.z));
_local23 = (_local15 - _local16);
_local18.x = (((_local23 * _local18.x) + ((2 * _local16) * _local19.x)) * _local17);
_local18.y = (((_local23 * _local18.y) + ((2 * _local16) * _local19.y)) * _local17);
_local18.z = (((_local23 * _local18.z) + ((2 * _local16) * _local19.z)) * _local17);
_local19.x = (_local22.x + _local18.x);
_local19.y = (_local22.y + _local18.y);
_local19.z = (_local22.z + _local18.z);
_arg1.vx = (_local18.x + _local20.x);
_arg1.vy = (_local18.y + _local20.y);
_arg1.vz = (_local18.z + _local20.z);
_arg2.vx = (_local19.x + _local21.x);
_arg2.vy = (_local19.y + _local21.y);
_arg2.vz = (_local19.z + _local21.z);
Vec3DPool.recycle(_local10);
Vec3DPool.recycle(_local18);
Vec3DPool.recycle(_local19);
Vec3DPool.recycle(_local20);
Vec3DPool.recycle(_local21);
Vec3DPool.recycle(_local22);
};
}
override public function getXMLTagName():String{
return ("Collide3D");
}
}
}//package idv.cjcat.stardust.threeD.actions
Section 105
//Damping3D (idv.cjcat.stardust.threeD.actions.Damping3D)
package idv.cjcat.stardust.threeD.actions {
import idv.cjcat.stardust.common.xml.*;
import idv.cjcat.stardust.common.particles.*;
import idv.cjcat.stardust.threeD.particles.*;
import idv.cjcat.stardust.common.emitters.*;
public class Damping3D extends Action3D {
public var damping:Number;
public function Damping3D(_arg1:Number=0){
this.damping = _arg1;
}
override public function parseXML(_arg1:XML, _arg2:XMLBuilder=null):void{
super.parseXML(_arg1, _arg2);
damping = parseFloat(_arg1.@damping);
}
override public function update(_arg1:Emitter, _arg2:Particle, _arg3:Number):void{
var _local4:Particle3D = (_arg2 as Particle3D);
var _local5:Number = 1;
var _local6:Number = 1;
if (damping != 0){
_local6 = Math.pow((1 - damping), _arg3);
};
_local4.vx = (_local4.vx * _local6);
_local4.vy = (_local4.vy * _local6);
_local4.vz = (_local4.vz * _local6);
}
override public function getXMLTagName():String{
return ("Damping3D");
}
override public function toXML():XML{
var _local1:XML = super.toXML();
_local1.@damping = damping;
return (_local1);
}
}
}//package idv.cjcat.stardust.threeD.actions
Section 106
//DeathZone3D (idv.cjcat.stardust.threeD.actions.DeathZone3D)
package idv.cjcat.stardust.threeD.actions {
import idv.cjcat.stardust.common.xml.*;
import idv.cjcat.stardust.common.particles.*;
import idv.cjcat.stardust.threeD.particles.*;
import idv.cjcat.stardust.common.emitters.*;
import idv.cjcat.stardust.threeD.zones.*;
public class DeathZone3D extends Action3D {
public var inverted:Boolean;
public var zone:Zone3D;
public function DeathZone3D(_arg1:Zone3D=null, _arg2:Boolean=false){
this.zone = _arg1;
this.inverted = _arg2;
}
override public function getXMLTagName():String{
return ("DeathZone3D");
}
override public function parseXML(_arg1:XML, _arg2:XMLBuilder=null):void{
super.parseXML(_arg1, _arg2);
if (_arg1.@zone == "null"){
zone = null;
} else {
zone = (_arg2.getElementByName(_arg1.@zone) as Zone3D);
};
inverted = (_arg1.@inverted == "true");
}
override public function update(_arg1:Emitter, _arg2:Particle, _arg3:Number):void{
if (!zone){
return;
};
var _local4:Particle3D = (_arg2 as Particle3D);
var _local5 = !(zone.contains(_local4.x, _local4.y, _local4.z));
if (inverted){
_local5 = !(_local5);
};
if (!_local5){
_arg2.isDead = true;
};
}
override public function toXML():XML{
var _local1:XML = super.toXML();
if (!zone){
_local1.@zone = "null";
} else {
_local1.@zone = zone.name;
};
_local1.@inverted = inverted;
return (_local1);
}
override public function getRelatedObjects():Array{
if (!zone){
return ([]);
};
return ([zone]);
}
}
}//package idv.cjcat.stardust.threeD.actions
Section 107
//Deflect3D (idv.cjcat.stardust.threeD.actions.Deflect3D)
package idv.cjcat.stardust.threeD.actions {
import idv.cjcat.stardust.common.xml.*;
import idv.cjcat.stardust.common.particles.*;
import idv.cjcat.stardust.threeD.geom.*;
import idv.cjcat.stardust.threeD.particles.*;
import idv.cjcat.stardust.common.emitters.*;
import idv.cjcat.stardust.threeD.deflectors.*;
import idv.cjcat.stardust.*;
public class Deflect3D extends Action3D {
sd var deflectors:Array;
public function Deflect3D(){
deflectors = [];
}
override public function toXML():XML{
var _local2:Deflector3D;
var _local1:XML = super.toXML();
if (deflectors.length > 0){
_local1.appendChild(<deflectors/>
);
for each (_local2 in deflectors) {
_local1.deflectors.appendChild(_local2.getXMLTag());
};
};
return (_local1);
}
override public function getXMLTagName():String{
return ("Deflect3D");
}
override public function update(_arg1:Emitter, _arg2:Particle, _arg3:Number):void{
var _local5:Deflector3D;
var _local6:MotionData6D;
var _local4:Particle3D = (_arg2 as Particle3D);
for each (_local5 in deflectors) {
_local6 = _local5.getMotionData6D(_local4);
_local4.x = _local6.x;
_local4.y = _local6.y;
_local4.z = _local6.z;
_local4.vx = _local6.vx;
_local4.vy = _local6.vy;
_local4.vz = _local6.vz;
MotionData6DPool.recycle(_local6);
};
}
override public function parseXML(_arg1:XML, _arg2:XMLBuilder=null):void{
var _local3:XML;
super.parseXML(_arg1, _arg2);
clearDeflectors();
for each (_local3 in _arg1.deflectors.*) {
addDeflector((_arg2.getElementByName(_local3.@name) as Deflector3D));
};
}
public function removeDeflector(_arg1:Deflector3D):void{
var _local2:int = deflectors.indexOf(_arg1);
if (_local2 >= 0){
deflectors.splice(_local2, 1);
};
}
public function addDeflector(_arg1:Deflector3D):void{
if (deflectors.indexOf(_arg1) < 0){
deflectors.push(_arg1);
};
}
public function clearDeflectors():void{
deflectors = [];
}
override public function getRelatedObjects():Array{
return (deflectors);
}
}
}//package idv.cjcat.stardust.threeD.actions
Section 108
//Explode3D (idv.cjcat.stardust.threeD.actions.Explode3D)
package idv.cjcat.stardust.threeD.actions {
import flash.events.*;
import idv.cjcat.stardust.common.xml.*;
import idv.cjcat.stardust.common.particles.*;
import idv.cjcat.stardust.threeD.geom.*;
import idv.cjcat.stardust.threeD.particles.*;
import idv.cjcat.stardust.common.emitters.*;
public class Explode3D extends Action3D {
public var y:Number;
public var strength:Number;
public var growSpeed:Number;
private var _discharged:Boolean;
private var _currentOuterRadius:Number;
public var epsilon:Number;
private var _currentInnerRadius:Number;
public var x:Number;
public var maxDistance:Number;
public var z:Number;
public var attenuationPower:Number;
public function Explode3D(_arg1:Number=0, _arg2:Number=0, _arg3:Number=0, _arg4:Number=5, _arg5:Number=40, _arg6:Number=200, _arg7:Number=0.1, _arg8:Number=1){
this.x = _arg1;
this.y = _arg2;
this.z = _arg3;
this.strength = _arg4;
this.growSpeed = _arg5;
this.maxDistance = _arg6;
this.attenuationPower = _arg7;
this.epsilon = _arg8;
_discharged = true;
}
override public function update(_arg1:Emitter, _arg2:Particle, _arg3:Number):void{
if (_discharged){
return;
};
var _local4:Particle3D = (_arg2 as Particle3D);
var _local5:Vec3D = Vec3DPool.get((_local4.x - x), (_local4.y - y), (_local4.z - z));
var _local6:Number = _local5.length;
if (_local6 < epsilon){
_local6 = epsilon;
};
if ((((_local6 >= _currentInnerRadius)) && ((_local6 < _currentOuterRadius)))){
_local5.length = (strength * Math.pow(_local6, -(attenuationPower)));
_local4.vx = (_local4.vx + (_local5.x * _arg3));
_local4.vy = (_local4.vy + (_local5.y * _arg3));
_local4.vz = (_local4.vz + (_local5.z * _arg3));
};
Vec3DPool.recycle(_local5);
}
override public function postUpdate(_arg1:Emitter, _arg2:Number):void{
if (_discharged){
return;
};
_currentInnerRadius = (_currentInnerRadius + growSpeed);
_currentOuterRadius = (_currentOuterRadius + growSpeed);
if (_currentInnerRadius > maxDistance){
_discharged = true;
};
}
public function explode(_arg1:Event=null):void{
_discharged = false;
_currentInnerRadius = 0;
_currentOuterRadius = growSpeed;
}
override public function toXML():XML{
var _local1:XML = super.toXML();
_local1.@x = x;
_local1.@y = y;
_local1.@z = z;
_local1.@strength = strength;
_local1.@growSpeed = growSpeed;
_local1.@maxDistance = maxDistance;
_local1.@attenuationPower = attenuationPower;
_local1.@epsilon = epsilon;
return (_local1);
}
override public function getXMLTagName():String{
return ("Explode3D");
}
override public function parseXML(_arg1:XML, _arg2:XMLBuilder=null):void{
super.parseXML(_arg1, _arg2);
x = parseFloat(_arg1.@x);
y = parseFloat(_arg1.@y);
z = parseFloat(_arg1.@z);
strength = parseFloat(_arg1.@strength);
growSpeed = parseFloat(_arg1.@growSpeed);
maxDistance = parseFloat(_arg1.@maxDistance);
attenuationPower = parseFloat(_arg1.@attenuationPower);
epsilon = parseFloat(_arg1.@epsilon);
}
}
}//package idv.cjcat.stardust.threeD.actions
Section 109
//Gravity3D (idv.cjcat.stardust.threeD.actions.Gravity3D)
package idv.cjcat.stardust.threeD.actions {
import idv.cjcat.stardust.common.xml.*;
import idv.cjcat.stardust.common.particles.*;
import idv.cjcat.stardust.threeD.geom.*;
import idv.cjcat.stardust.threeD.particles.*;
import idv.cjcat.stardust.common.emitters.*;
import idv.cjcat.stardust.threeD.fields.*;
import idv.cjcat.stardust.*;
public class Gravity3D extends Action3D {
sd var fields:Array;
public function Gravity3D(){
fields = [];
}
public function addField(_arg1:Field3D):void{
if (fields.indexOf(_arg1) < 0){
fields.push(_arg1);
};
}
override public function toXML():XML{
var _local2:Field3D;
var _local1:XML = super.toXML();
if (fields.length > 0){
_local1.appendChild(<fields/>
);
for each (_local2 in fields) {
_local1.fields.appendChild(_local2.getXMLTag());
};
};
return (_local1);
}
override public function parseXML(_arg1:XML, _arg2:XMLBuilder=null):void{
var _local3:XML;
super.parseXML(_arg1, _arg2);
clearFields();
for each (_local3 in _arg1.fields.*) {
addField((_arg2.getElementByName(_local3.@name) as Field3D));
};
}
public function clearFields():void{
fields = [];
}
override public function update(_arg1:Emitter, _arg2:Particle, _arg3:Number):void{
var _local5:Field3D;
var _local6:MotionData3D;
var _local4:Particle3D = (_arg2 as Particle3D);
for each (_local5 in fields) {
_local6 = _local5.getMotionData3D(_local4);
_local4.vx = (_local4.vx + (_local6.x * _arg3));
_local4.vy = (_local4.vy + (_local6.y * _arg3));
_local4.vz = (_local4.vz + (_local6.z * _arg3));
MotionData3DPool.recycle(_local6);
};
}
override public function getXMLTagName():String{
return ("Gravity3D");
}
public function removeField(_arg1:Field3D):void{
var _local2:int = fields.indexOf(_arg1);
if (_local2 >= 0){
fields.splice(_local2, 1);
};
}
override public function getRelatedObjects():Array{
return (fields);
}
}
}//package idv.cjcat.stardust.threeD.actions
Section 110
//Move3D (idv.cjcat.stardust.threeD.actions.Move3D)
package idv.cjcat.stardust.threeD.actions {
import idv.cjcat.stardust.common.xml.*;
import idv.cjcat.stardust.common.particles.*;
import idv.cjcat.stardust.threeD.particles.*;
import idv.cjcat.stardust.common.emitters.*;
public class Move3D extends Action3D {
public var multiplier:Number;
public function Move3D(_arg1:Number=1){
this.multiplier = _arg1;
}
override public function getXMLTagName():String{
return ("Move3D");
}
override public function parseXML(_arg1:XML, _arg2:XMLBuilder=null):void{
super.parseXML(_arg1, _arg2);
multiplier = parseFloat(_arg1.@multiplier);
}
override public function update(_arg1:Emitter, _arg2:Particle, _arg3:Number):void{
var _local4:Particle3D;
_local4 = (_arg2 as Particle3D);
var _local5:Number = (_arg3 * multiplier);
_local4.x = (_local4.x + (_local4.vx * _local5));
_local4.y = (_local4.y + (_local4.vy * _local5));
_local4.z = (_local4.z + (_local4.vz * _local5));
}
override public function toXML():XML{
var _local1:XML = super.toXML();
_local1.@multiplier = multiplier;
return (_local1);
}
}
}//package idv.cjcat.stardust.threeD.actions
Section 111
//MutualAction3D (idv.cjcat.stardust.threeD.actions.MutualAction3D)
package idv.cjcat.stardust.threeD.actions {
import idv.cjcat.stardust.common.xml.*;
import idv.cjcat.stardust.common.particles.*;
import idv.cjcat.stardust.threeD.particles.*;
import idv.cjcat.stardust.common.emitters.*;
import idv.cjcat.stardust.*;
public class MutualAction3D extends Action3D {
public var maxDistance:Number;
override public function getXMLTagName():String{
return ("MutualAction3D");
}
protected function doMutualAction(_arg1:Particle3D, _arg2:Particle3D, _arg3:Number):void{
}
override public function parseXML(_arg1:XML, _arg2:XMLBuilder=null):void{
super.parseXML(_arg1, _arg2);
maxDistance = parseFloat(_arg1.@maxDistance);
}
final override public function update(_arg1:Emitter, _arg2:Particle, _arg3:Number):void{
var _local7:Number;
var _local8:Number;
var _local9:Number;
var _local4:Array = _arg1.sd::particles;
var _local5:int = _arg2.sortedIndex;
var _local6:int = (_local5 + 1);
while (_local6 < _local4.length) {
_local7 = (_local4[_local6].x - _local4[_local5].x);
if (_local7 <= maxDistance){
_local8 = (_local4[_local6].y - _local4[_local5].y);
_local9 = (_local4[_local6].z - _local4[_local5].z);
if (((_local8 * _local8) + (_local9 * _local9)) <= (maxDistance * maxDistance)){
doMutualAction((_local4[_local6] as Particle3D), (_local4[_local5] as Particle3D), _arg3);
};
} else {
break;
};
_local6++;
};
}
final override public function get needsSortedParticles():Boolean{
return (active);
}
override public function toXML():XML{
var _local1:XML = super.toXML();
_local1.@maxDistance = maxDistance;
return (_local1);
}
}
}//package idv.cjcat.stardust.threeD.actions
Section 112
//MutualGravity3D (idv.cjcat.stardust.threeD.actions.MutualGravity3D)
package idv.cjcat.stardust.threeD.actions {
import idv.cjcat.stardust.common.xml.*;
import idv.cjcat.stardust.threeD.geom.*;
import idv.cjcat.stardust.threeD.particles.*;
public class MutualGravity3D extends MutualAction3D {
public var strength:Number;
public var epsilon:Number;
public var massless:Boolean;
public var attenuationPower:Number;
public function MutualGravity3D(_arg1:Number=1, _arg2:Number=100, _arg3:Number=1){
this.strength = _arg1;
this.maxDistance = _arg2;
this.epsilon = 1;
this.attenuationPower = _arg3;
this.massless = true;
}
override public function getXMLTagName():String{
return ("MutualGravity3D");
}
override public function parseXML(_arg1:XML, _arg2:XMLBuilder=null):void{
super.parseXML(_arg1, _arg2);
strength = parseFloat(_arg1.@strength);
epsilon = parseFloat(_arg1.@epsilon);
attenuationPower = parseFloat(_arg1.@attenuationPower);
massless = (_arg1.@massless == "true");
}
override protected function doMutualAction(_arg1:Particle3D, _arg2:Particle3D, _arg3:Number):void{
var _local9:Number;
var _local4:Number = (_arg1.x - _arg2.x);
var _local5:Number = (_arg1.y - _arg2.y);
var _local6:Number = (_arg1.z - _arg2.z);
var _local7:Number = Math.sqrt((((_local4 * _local4) + (_local5 * _local5)) + (_local6 * _local6)));
if (_local7 < epsilon){
_local7 = epsilon;
};
var _local8:Vec3D = Vec3DPool.get(_local4, _local5, _local6);
if (massless){
_local8.length = (strength * Math.pow(_local7, -(attenuationPower)));
_arg2.vx = (_arg2.vx + (_local8.x * _arg3));
_arg2.vy = (_arg2.vy + (_local8.y * _arg3));
_arg2.vz = (_arg2.vz + (_local8.z * _arg3));
_arg1.vx = (_arg1.vx - (_local8.x * _arg3));
_arg1.vy = (_arg1.vy - (_local8.y * _arg3));
_arg1.vz = (_arg1.vz - (_local8.z * _arg3));
} else {
_local9 = (((strength * _arg1.mass) * _arg2.mass) * Math.pow(_local7, -(attenuationPower)));
_local8.length = (_local9 / _arg2.mass);
_arg2.vx = (_arg2.vx + (_local8.x * _arg3));
_arg2.vy = (_arg2.vy + (_local8.y * _arg3));
_arg2.vz = (_arg2.vz + (_local8.z * _arg3));
_local8.length = (_local9 / _arg1.mass);
_arg1.vx = (_arg1.vx - (_local8.x * _arg3));
_arg1.vy = (_arg1.vy - (_local8.y * _arg3));
_arg1.vz = (_arg1.vz - (_local8.z * _arg3));
};
Vec3DPool.recycle(_local8);
}
override public function toXML():XML{
var _local1:XML = super.toXML();
_local1.@strength = strength;
_local1.@epsilon = epsilon;
_local1.@attenuationPower = attenuationPower;
_local1.@massless = massless;
return (_local1);
}
}
}//package idv.cjcat.stardust.threeD.actions
Section 113
//NormalDrift3D (idv.cjcat.stardust.threeD.actions.NormalDrift3D)
package idv.cjcat.stardust.threeD.actions {
import idv.cjcat.stardust.common.xml.*;
import idv.cjcat.stardust.common.particles.*;
import idv.cjcat.stardust.threeD.geom.*;
import idv.cjcat.stardust.threeD.particles.*;
import idv.cjcat.stardust.common.emitters.*;
import idv.cjcat.stardust.common.math.*;
public class NormalDrift3D extends Action3D {
private var _random:Random;
public var max:Number;
public var massless:Boolean;
public function NormalDrift3D(_arg1:Number=0.2, _arg2:Random=null){
this.massless = true;
this.max = _arg1;
this.random = _arg2;
}
public function get random():Random{
return (_random);
}
public function set random(_arg1:Random):void{
if (!_arg1){
_arg1 = new UniformRandom();
};
_random = _arg1;
}
override public function update(_arg1:Emitter, _arg2:Particle, _arg3:Number):void{
var _local4:Particle3D;
var _local5:Vec3D;
_local4 = (_arg2 as Particle3D);
_local5 = Vec3DPool.get(_local4.vx, _local4.vy, _local4.vz);
var _local6:Vec3D = Vec3DPool.get(Math.random(), Math.random(), Math.random());
_local6 = _local6.cross(_local5);
random.setRange(-(max), max);
_local6.length = random.random();
_local6.rotateThis(_local5, (360 * Math.random()));
if (!massless){
_local5.length = (_local5.length / _local4.mass);
};
_local4.vx = (_local4.vx + (_local6.x * _arg3));
_local4.vy = (_local4.vy + (_local6.y * _arg3));
_local4.vz = (_local4.vz + (_local6.z * _arg3));
Vec3DPool.recycle(_local5);
Vec3DPool.recycle(_local6);
}
override public function parseXML(_arg1:XML, _arg2:XMLBuilder=null):void{
super.parseXML(_arg1, _arg2);
massless = (_arg1.@massless == "true");
max = parseFloat(_arg1.@max);
random = (_arg2.getElementByName(_arg1.@random) as Random);
}
override public function toXML():XML{
var _local1:XML = super.toXML();
_local1.@massless = massless;
_local1.@max = max;
_local1.@random = _random.name;
return (_local1);
}
override public function getXMLTagName():String{
return ("NormalDrift3D");
}
}
}//package idv.cjcat.stardust.threeD.actions
Section 114
//Oriented3D (idv.cjcat.stardust.threeD.actions.Oriented3D)
package idv.cjcat.stardust.threeD.actions {
import idv.cjcat.stardust.common.xml.*;
import idv.cjcat.stardust.common.particles.*;
import idv.cjcat.stardust.threeD.particles.*;
import idv.cjcat.stardust.common.emitters.*;
import idv.cjcat.stardust.common.math.*;
public class Oriented3D extends Action3D {
public var offsetX:Number;
public var offsetY:Number;
public var offsetZ:Number;
public var factor:Number;
public function Oriented3D(_arg1:Number=1, _arg2:Number=0, _arg3:Number=90, _arg4:Number=0){
this.factor = _arg1;
this.offsetX = _arg2;
this.offsetY = _arg3;
this.offsetZ = _arg4;
}
override public function getXMLTagName():String{
return ("Oriented3D");
}
override public function update(_arg1:Emitter, _arg2:Particle, _arg3:Number):void{
var _local4:Particle3D = (_arg2 as Particle3D);
var _local5:Number = (((Math.atan2(Math.sqrt(((_local4.vx * _local4.vx) + (_local4.vz * _local4.vz))), _local4.vy) * StardustMath.RADIAN_TO_DEGREE) + offsetX) - _local4.rotationX);
var _local6:Number = (((Math.atan2(-(_local4.vz), _local4.vx) * StardustMath.RADIAN_TO_DEGREE) + offsetY) - _local4.rotationY);
var _local7:Number = (offsetZ - _local4.rotationZ);
var _local8:Number = (factor / _arg3);
_local4.rotationX = (_local4.rotationX + (_local8 * _local5));
_local4.rotationY = (_local4.rotationY + (_local8 * _local6));
_local4.rotationZ = (_local4.rotationZ + (_local8 * _local7));
}
override public function parseXML(_arg1:XML, _arg2:XMLBuilder=null):void{
super.parseXML(_arg1, _arg2);
factor = parseFloat(_arg1.@factor);
offsetX = parseFloat(_arg1.@offsetX);
offsetY = parseFloat(_arg1.@offsetY);
offsetZ = parseFloat(_arg1.@offsetZ);
}
override public function toXML():XML{
var _local1:XML = super.toXML();
_local1.@factor = factor;
_local1.@offsetX = offsetX;
_local1.@offsetY = offsetY;
_local1.@offsetZ = offsetZ;
return (_local1);
}
}
}//package idv.cjcat.stardust.threeD.actions
Section 115
//RandomDrift3D (idv.cjcat.stardust.threeD.actions.RandomDrift3D)
package idv.cjcat.stardust.threeD.actions {
import idv.cjcat.stardust.common.xml.*;
import idv.cjcat.stardust.common.particles.*;
import idv.cjcat.stardust.threeD.particles.*;
import idv.cjcat.stardust.common.emitters.*;
import idv.cjcat.stardust.common.math.*;
public class RandomDrift3D extends Action3D {
private var _randomX:Random;
public var massless:Boolean;
public var maxX:Number;
private var _randomY:Random;
private var _randomZ:Random;
public var maxY:Number;
public var maxZ:Number;
public function RandomDrift3D(_arg1:Number=0.2, _arg2:Number=0.2, _arg3:Number=0.2, _arg4:Random=null, _arg5:Random=null, _arg6:Random=null){
this.massless = true;
this.maxX = _arg1;
this.maxY = _arg2;
this.maxZ = _arg3;
this.randomX = _arg4;
this.randomY = _arg5;
this.randomZ = _arg6;
}
public function set randomY(_arg1:Random):void{
if (!_arg1){
_arg1 = new UniformRandom();
};
_randomY = _arg1;
}
override public function update(_arg1:Emitter, _arg2:Particle, _arg3:Number):void{
var _local8:Number;
var _local4:Particle3D = (_arg2 as Particle3D);
randomX.setRange(-(maxX), maxX);
randomY.setRange(-(maxY), maxY);
randomZ.setRange(-(maxZ), maxZ);
var _local5:Number = randomX.random();
var _local6:Number = randomY.random();
var _local7:Number = randomZ.random();
if (!massless){
_local8 = (1 / _local4.mass);
_local5 = (_local5 * _local8);
_local6 = (_local6 * _local8);
_local7 = (_local7 * _local8);
};
_local4.vx = (_local4.vx + (_local5 * _arg3));
_local4.vy = (_local4.vy + (_local6 * _arg3));
_local4.vz = (_local4.vz + (_local7 * _arg3));
}
public function get randomX():Random{
return (_randomX);
}
override public function toXML():XML{
var _local1:XML = super.toXML();
_local1.@massless = massless;
_local1.@maxX = maxX;
_local1.@maxY = maxY;
_local1.@maxZ = maxZ;
_local1.@randomX = _randomX.name;
_local1.@randomY = _randomY.name;
_local1.@randomZ = _randomZ.name;
return (_local1);
}
override public function getRelatedObjects():Array{
return ([_randomX, _randomY, _randomZ]);
}
override public function getXMLTagName():String{
return ("RandomDrift3D");
}
override public function parseXML(_arg1:XML, _arg2:XMLBuilder=null):void{
super.parseXML(_arg1, _arg2);
massless = (_arg1.@massless == "true");
maxX = parseFloat(_arg1.@maxX);
maxY = parseFloat(_arg1.@maxY);
maxZ = parseFloat(_arg1.@maxZ);
randomX = (_arg2.getElementByName(_arg1.@randomX) as Random);
randomY = (_arg2.getElementByName(_arg1.@randomY) as Random);
randomZ = (_arg2.getElementByName(_arg1.@randomZ) as Random);
}
public function set randomZ(_arg1:Random):void{
if (!_arg1){
_arg1 = new UniformRandom();
};
_randomZ = _arg1;
}
public function set randomX(_arg1:Random):void{
if (!_arg1){
_arg1 = new UniformRandom();
};
_randomX = _arg1;
}
public function get randomY():Random{
return (_randomY);
}
public function get randomZ():Random{
return (_randomZ);
}
}
}//package idv.cjcat.stardust.threeD.actions
Section 116
//Spawn3D (idv.cjcat.stardust.threeD.actions.Spawn3D)
package idv.cjcat.stardust.threeD.actions {
import idv.cjcat.stardust.common.initializers.*;
import idv.cjcat.stardust.common.xml.*;
import idv.cjcat.stardust.common.particles.*;
import idv.cjcat.stardust.threeD.geom.*;
import idv.cjcat.stardust.threeD.particles.*;
import idv.cjcat.stardust.common.emitters.*;
import idv.cjcat.stardust.common.math.*;
import idv.cjcat.stardust.*;
public class Spawn3D extends Action3D implements InitializerCollector {
public var inheritDirection:Boolean;
private var _factory:Particle3DFactory;
private var _countRandom:Random;
public var inheritVelocity:Boolean;
public function Spawn3D(_arg1:Random=null, _arg2:Boolean=true, _arg3:Boolean=false){
this.inheritDirection = _arg2;
this.inheritVelocity = _arg3;
this.countRandom = _arg1;
_factory = new Particle3DFactory();
}
public function addInitializer(_arg1:Initializer):void{
_factory.addInitializer(_arg1);
}
override public function toXML():XML{
var _local2:Initializer;
var _local1:XML = super.toXML();
_local1.@inheritDirection = inheritDirection;
_local1.@inheritVelocity = inheritVelocity;
_local1.@countRandom = _countRandom.name;
if (_factory.sd::initializerCollection.sd::initializers.length > 0){
_local1.appendChild(<initializers/>
);
for each (_local2 in _factory.sd::initializerCollection.sd::initializers) {
_local1.initializers.appendChild(_local2.getXMLTag());
};
};
return (_local1);
}
override public function update(_arg1:Emitter, _arg2:Particle, _arg3:Number):void{
var _local6:Particle3D;
var _local7:Vec3D;
var _local4:Particle3D = (_arg2 as Particle3D);
var _local5:Array = _factory.createParticles(StardustMath.randomFloor((_countRandom.random() * _arg3)));
for each (_local6 in _local5) {
_local6.x = (_local6.x + _local4.x);
_local6.y = (_local6.y + _local4.y);
_local6.z = (_local6.z + _local4.z);
if (inheritVelocity){
_local6.vx = (_local6.vx + _local4.vx);
_local6.vy = (_local6.vy + _local4.vy);
_local6.vz = (_local6.vz + _local4.vz);
};
if (inheritDirection){
_local7 = Vec3DPool.get(_local6.vx, _local6.vy, _local6.vz);
_local7.rotateXThis(Math.atan2(Math.sqrt(((_local4.vx * _local4.vx) + (_local4.vz * _local4.vz))), -(_local4.vy)), true);
_local7.rotateYThis((Math.atan2(-(_local4.vz), _local4.vx) - StardustMath.HALF_PI), true);
_local6.vx = _local7.x;
_local6.vy = _local7.y;
_local6.vz = _local7.z;
Vec3DPool.recycle(_local7);
};
};
_arg1.addParticles(_local5);
}
public function clearInitializers():void{
_factory.clearInitializers();
}
override public function getXMLTagName():String{
return ("Spawn3D");
}
public function get countRandom():Random{
return (_countRandom);
}
public function set countRandom(_arg1:Random):void{
if (!_arg1){
_arg1 = new UniformRandom(0, 0);
};
_countRandom = _arg1;
}
override public function parseXML(_arg1:XML, _arg2:XMLBuilder=null):void{
var _local3:XML;
super.parseXML(_arg1, _arg2);
inheritDirection = (_arg1.@inheritDirection == "true");
inheritVelocity = (_arg1.@inheritVelocity == "true");
countRandom = (_arg2.getElementByName(_arg1.@countRandom) as Random);
clearInitializers();
for each (_local3 in _arg1.initializers.*) {
addInitializer((_arg2.getElementByName(_local3.@name) as Initializer));
};
}
public function removeInitializer(_arg1:Initializer):void{
_factory.removeInitializer(_arg1);
}
override public function getRelatedObjects():Array{
return ([_countRandom].concat(_factory.sd::initializerCollection.sd::initializers));
}
}
}//package idv.cjcat.stardust.threeD.actions
Section 117
//SpeedLimit3D (idv.cjcat.stardust.threeD.actions.SpeedLimit3D)
package idv.cjcat.stardust.threeD.actions {
import idv.cjcat.stardust.common.xml.*;
import idv.cjcat.stardust.common.particles.*;
import idv.cjcat.stardust.threeD.particles.*;
import idv.cjcat.stardust.common.emitters.*;
public class SpeedLimit3D extends Action3D {
public var limit:Number;
public function SpeedLimit3D(_arg1:Number=1.79769313486232E308){
this.limit = _arg1;
}
override public function parseXML(_arg1:XML, _arg2:XMLBuilder=null):void{
super.parseXML(_arg1, _arg2);
limit = parseFloat(_arg1.@limit);
}
override public function getXMLTagName():String{
return ("SpeedLimit3D");
}
override public function update(_arg1:Emitter, _arg2:Particle, _arg3:Number):void{
var _local6:Number;
var _local4:Particle3D = (_arg2 as Particle3D);
var _local5:Number = (((_local4.vx * _local4.vx) + (_local4.vy * _local4.vy)) + (_local4.vz * _local4.vz));
if (_local5 > (limit * limit)){
_local6 = (limit / Math.sqrt(_local5));
_local4.vx = (_local4.vx * _local6);
_local4.vy = (_local4.vy * _local6);
_local4.vz = (_local4.vz * _local6);
};
}
override public function toXML():XML{
var _local1:XML = super.toXML();
_local1.@limit = limit;
return (_local1);
}
}
}//package idv.cjcat.stardust.threeD.actions
Section 118
//Spin3D (idv.cjcat.stardust.threeD.actions.Spin3D)
package idv.cjcat.stardust.threeD.actions {
import idv.cjcat.stardust.common.xml.*;
import idv.cjcat.stardust.common.particles.*;
import idv.cjcat.stardust.threeD.particles.*;
import idv.cjcat.stardust.common.emitters.*;
public class Spin3D extends Action3D {
public var multiplier:Number;
public function Spin3D(_arg1:Number=1){
this.multiplier = _arg1;
}
override public function getXMLTagName():String{
return ("Spin3D");
}
override public function parseXML(_arg1:XML, _arg2:XMLBuilder=null):void{
super.parseXML(_arg1, _arg2);
multiplier = parseFloat(_arg1.@multiplier);
}
override public function update(_arg1:Emitter, _arg2:Particle, _arg3:Number):void{
var _local4:Particle3D = (_arg2 as Particle3D);
var _local5:Number = (_arg3 * multiplier);
_local4.rotationX = (_local4.rotationX + (_local4.omegaX * _local5));
_local4.rotationY = (_local4.rotationY + (_local4.omegaY * _local5));
_local4.rotationZ = (_local4.rotationZ + (_local4.omegaZ * _local5));
}
override public function toXML():XML{
var _local1:XML = super.toXML();
_local1.@multiplier = multiplier;
return (_local1);
}
}
}//package idv.cjcat.stardust.threeD.actions
Section 119
//VelocityField3D (idv.cjcat.stardust.threeD.actions.VelocityField3D)
package idv.cjcat.stardust.threeD.actions {
import idv.cjcat.stardust.common.xml.*;
import idv.cjcat.stardust.common.particles.*;
import idv.cjcat.stardust.threeD.geom.*;
import idv.cjcat.stardust.threeD.particles.*;
import idv.cjcat.stardust.common.emitters.*;
import idv.cjcat.stardust.threeD.fields.*;
public class VelocityField3D extends Action3D {
public var field:Field3D;
public function VelocityField3D(_arg1:Field3D=null){
this.field = _arg1;
}
override public function parseXML(_arg1:XML, _arg2:XMLBuilder=null):void{
super.parseXML(_arg1, _arg2);
if (_arg1.@field == "null"){
field = null;
} else {
field = (_arg2.getElementByName(_arg1.@field) as Field3D);
};
}
override public function update(_arg1:Emitter, _arg2:Particle, _arg3:Number):void{
if (!field){
return;
};
var _local4:Particle3D = (_arg2 as Particle3D);
var _local5:MotionData3D = field.getMotionData3D(_local4);
_local4.vx = _local5.x;
_local4.vy = _local5.y;
_local4.vz = _local5.z;
MotionData3DPool.recycle(_local5);
}
override public function getXMLTagName():String{
return ("VelocityField3D");
}
override public function toXML():XML{
var _local1:XML = super.toXML();
if (!field){
_local1.@field = "null";
} else {
_local1.@field = field.name;
};
return (_local1);
}
}
}//package idv.cjcat.stardust.threeD.actions
Section 120
//Camera3D (idv.cjcat.stardust.threeD.cameras.Camera3D)
package idv.cjcat.stardust.threeD.cameras {
import idv.cjcat.stardust.threeD.geom.*;
public class Camera3D {
private var _direction:Vec3D;
private var _position:Vec3D;
public var focalLength:Number;// = 500
public var zoom:Number;// = 1
public var usePerspective:Boolean;// = true
public var rotation:Number;// = 0
public function Camera3D(){
_position = new Vec3D(0, 0, 0);
_direction = new Vec3D(0, 0, 1);
super();
}
public function get position():Vec3D{
return (_position);
}
public function get direction():Vec3D{
return (_direction);
}
}
}//package idv.cjcat.stardust.threeD.cameras
Section 121
//BoundingCube (idv.cjcat.stardust.threeD.deflectors.BoundingCube)
package idv.cjcat.stardust.threeD.deflectors {
import idv.cjcat.stardust.common.xml.*;
import idv.cjcat.stardust.threeD.geom.*;
import idv.cjcat.stardust.threeD.particles.*;
public class BoundingCube extends Deflector3D {
public var depth:Number;
public var width:Number;
public var height:Number;
public var x:Number;
public var y:Number;
public var z:Number;
public function BoundingCube(_arg1:Number=0, _arg2:Number=0, _arg3:Number=0, _arg4:Number=640, _arg5:Number=480, _arg6:Number=480){
this.bounce = 1;
this.x = _arg1;
this.y = _arg2;
this.z = _arg3;
this.width = _arg4;
this.height = _arg5;
this.depth = _arg6;
}
override public function getXMLTagName():String{
return ("BoundingCube");
}
override public function parseXML(_arg1:XML, _arg2:XMLBuilder=null):void{
super.parseXML(_arg1, _arg2);
x = parseFloat(_arg1.@x);
y = parseFloat(_arg1.@y);
z = parseFloat(_arg1.@z);
width = parseFloat(_arg1.@width);
height = parseFloat(_arg1.@height);
depth = parseFloat(_arg1.@depth);
}
override protected function calculateMotionData6D(_arg1:Particle3D):MotionData6D{
var _local2:Number = (_arg1.collisionRadius * _arg1.scale);
var _local3:Number = (x + _local2);
var _local4:Number = ((x + width) - _local2);
var _local5:Number = (y + _local2);
var _local6:Number = ((y + height) - _local2);
var _local7:Number = (z + _local2);
var _local8:Number = ((z + depth) - _local2);
var _local9:Number = -(bounce);
var _local10:Number = _arg1.x;
var _local11:Number = _arg1.y;
var _local12:Number = _arg1.z;
var _local13:Number = _arg1.vx;
var _local14:Number = _arg1.vy;
var _local15:Number = _arg1.vz;
if (_arg1.x <= _local3){
_local10 = _local3;
_local13 = (_local13 * _local9);
} else {
if (_arg1.x >= _local4){
_local10 = _local4;
_local13 = (_local13 * _local9);
};
};
if (_arg1.y <= _local5){
_local11 = _local5;
_local14 = (_local14 * _local9);
} else {
if (_arg1.y >= _local6){
_local11 = _local6;
_local14 = (_local14 * _local9);
};
};
if (_arg1.z <= _local7){
_local12 = _local7;
_local15 = (_local15 * _local9);
} else {
if (_arg1.z >= _local8){
_local12 = _local8;
_local15 = (_local15 * _local9);
};
};
return (MotionData6DPool.get(_local10, _local11, _local12, _local13, _local14, _local15));
}
override public function toXML():XML{
var _local1:XML = super.toXML();
_local1.@x = x;
_local1.@y = y;
_local1.@z = z;
_local1.@width = width;
_local1.@height = height;
_local1.@depth = depth;
return (_local1);
}
}
}//package idv.cjcat.stardust.threeD.deflectors
Section 122
//BoundingSphere (idv.cjcat.stardust.threeD.deflectors.BoundingSphere)
package idv.cjcat.stardust.threeD.deflectors {
import idv.cjcat.stardust.common.xml.*;
import idv.cjcat.stardust.threeD.geom.*;
import idv.cjcat.stardust.threeD.particles.*;
public class BoundingSphere extends Deflector3D {
public var y:Number;
public var radius:Number;
public var x:Number;
public var z:Number;
public function BoundingSphere(_arg1:Number=0, _arg2:Number=0, _arg3:Number=0, _arg4:Number=1000){
this.bounce = 1;
this.x = _arg1;
this.y = _arg2;
this.z = _arg3;
this.radius = _arg4;
}
override public function getXMLTagName():String{
return ("BoundingSphere");
}
override public function parseXML(_arg1:XML, _arg2:XMLBuilder=null):void{
super.parseXML(_arg1, _arg2);
x = parseFloat(_arg1.@x);
y = parseFloat(_arg1.@y);
z = parseFloat(_arg1.@z);
radius = parseFloat(_arg1.@radius);
}
override protected function calculateMotionData6D(_arg1:Particle3D):MotionData6D{
var _local2:Number = (_arg1.collisionRadius * _arg1.scale);
var _local3:Vec3D = Vec3DPool.get((_arg1.x - x), (_arg1.y - y), (_arg1.z - z));
var _local4:Number = (_local3.length + _local2);
if (_local4 < radius){
return (MotionData6DPool.get(_arg1.x, _arg1.y, _arg1.z, _arg1.vx, _arg1.vy, _arg1.vz));
};
_local3.length = (radius - _local2);
var _local5:Vec3D = Vec3DPool.get(_arg1.vx, _arg1.vy, _arg1.vz);
_local5.projectThis(_local3);
var _local6:Number = (1 + bounce);
Vec3DPool.recycle(_local3);
Vec3DPool.recycle(_local5);
return (MotionData6DPool.get((x + _local3.x), (y + _local3.y), (z + _local3.z), (_arg1.vx - (_local6 * _local5.x)), (_arg1.vy - (_local6 * _local5.y)), (_arg1.vz - (_local6 * _local5.z))));
}
override public function toXML():XML{
var _local1:XML = super.toXML();
_local1.@x = x;
_local1.@y = y;
_local1.@z = z;
_local1.@radius = radius;
return (_local1);
}
}
}//package idv.cjcat.stardust.threeD.deflectors
Section 123
//Deflector3D (idv.cjcat.stardust.threeD.deflectors.Deflector3D)
package idv.cjcat.stardust.threeD.deflectors {
import idv.cjcat.stardust.common.xml.*;
import idv.cjcat.stardust.common.*;
import idv.cjcat.stardust.threeD.geom.*;
import idv.cjcat.stardust.threeD.particles.*;
public class Deflector3D extends StardustElement {
public var active:Boolean;
public var bounce:Number;
public function Deflector3D(){
active = true;
bounce = 0.8;
}
override public function getElementTypeXMLTag():XML{
return (<deflectors/>
);
}
override public function getXMLTagName():String{
return ("Deflector3D");
}
final public function getMotionData6D(_arg1:Particle3D):MotionData6D{
if (!active){
return (MotionData6DPool.get(_arg1.x, _arg1.y, _arg1.z, _arg1.vx, _arg1.vy, _arg1.vz));
};
return (calculateMotionData6D(_arg1));
}
override public function parseXML(_arg1:XML, _arg2:XMLBuilder=null):void{
super.parseXML(_arg1, _arg2);
active = (_arg1.@active == "true");
bounce = parseFloat(_arg1.@bounce);
}
protected function calculateMotionData6D(_arg1:Particle3D):MotionData6D{
return (null);
}
override public function toXML():XML{
var _local1:XML = super.toXML();
_local1.@active = active;
_local1.@bounce = bounce;
return (_local1);
}
}
}//package idv.cjcat.stardust.threeD.deflectors
Section 124
//PlaneDeflector (idv.cjcat.stardust.threeD.deflectors.PlaneDeflector)
package idv.cjcat.stardust.threeD.deflectors {
import idv.cjcat.stardust.common.xml.*;
import idv.cjcat.stardust.threeD.geom.*;
import idv.cjcat.stardust.threeD.particles.*;
public class PlaneDeflector extends Deflector3D {
private var _normal:Vec3D;
public var x:Number;
public var y:Number;
public var z:Number;
public function PlaneDeflector(_arg1:Number=0, _arg2:Number=0, _arg3:Number=0, _arg4:Number=0, _arg5:Number=-1, _arg6:Number=0){
this.x = _arg1;
this.y = _arg2;
this.z = _arg3;
_normal = new Vec3D(_arg4, _arg5, _arg6);
}
override public function getXMLTagName():String{
return ("PlaneDeflector");
}
public function get normal():Vec3D{
return (_normal);
}
override public function parseXML(_arg1:XML, _arg2:XMLBuilder=null):void{
super.parseXML(_arg1, _arg2);
x = parseFloat(_arg1.@x);
y = parseFloat(_arg1.@y);
z = parseFloat(_arg1.@z);
normal.x = parseFloat(_arg1.@normalX);
normal.y = parseFloat(_arg1.@normalY);
normal.z = parseFloat(_arg1.@normalZ);
}
override protected function calculateMotionData6D(_arg1:Particle3D):MotionData6D{
var _local2:Vec3D = Vec3DPool.get((_arg1.x - x), (_arg1.y - y), (_arg1.z - z));
_local2 = _local2.project(normal);
var _local3:Number = _local2.dot(normal);
var _local4:Number = (_arg1.collisionRadius * _arg1.scale);
var _local5:Number = _local2.length;
if (_local3 > 0){
if (_local5 > _local4){
return (new MotionData6D(_arg1.x, _arg1.y, _arg1.z, _arg1.vx, _arg1.vy, _arg1.vz));
};
_local2.length = (_local4 - _local5);
} else {
_local2.length = -((_local5 + _local4));
};
var _local6:Vec3D = Vec3DPool.get(_arg1.vx, _arg1.vy, _arg1.vz);
_local6 = _local6.project(normal);
var _local7:Number = (1 + bounce);
Vec3DPool.recycle(_local2);
Vec3DPool.recycle(_local6);
return (MotionData6DPool.get((_arg1.x + _local2.x), (_arg1.y + _local2.y), (_arg1.z + _local2.z), (_arg1.vx - (_local6.x * _local7)), (_arg1.vy - (_local6.y * _local7)), (_arg1.vz - (_local6.z * _local7))));
}
override public function toXML():XML{
var _local1:XML = super.toXML();
_local1.@x = x;
_local1.@y = y;
_local1.@z = z;
_local1.@normalX = normal.x;
_local1.@normalY = normal.y;
_local1.@normalZ = normal.z;
return (_local1);
}
}
}//package idv.cjcat.stardust.threeD.deflectors
Section 125
//SphereDeflector (idv.cjcat.stardust.threeD.deflectors.SphereDeflector)
package idv.cjcat.stardust.threeD.deflectors {
import idv.cjcat.stardust.common.xml.*;
import idv.cjcat.stardust.threeD.geom.*;
import idv.cjcat.stardust.threeD.particles.*;
public class SphereDeflector extends Deflector3D {
public var y:Number;// = 0
public var radius:Number;
public var x:Number;// = 0
public var z:Number;// = 0
public function SphereDeflector(_arg1:Number=0, _arg2:Number=0, _arg3:Number=0, _arg4:Number=100){
this.x = _arg1;
this.y = _arg2;
this.z = _arg3;
this.radius = _arg4;
}
override public function getXMLTagName():String{
return ("SphereDeflector");
}
override public function parseXML(_arg1:XML, _arg2:XMLBuilder=null):void{
super.parseXML(_arg1, _arg2);
x = parseFloat(_arg1.@x);
y = parseFloat(_arg1.@y);
z = parseFloat(_arg1.@z);
radius = parseFloat(_arg1.@radius);
}
override protected function calculateMotionData6D(_arg1:Particle3D):MotionData6D{
var _local2:Number = (_arg1.collisionRadius * _arg1.scale);
var _local3:Vec3D = Vec3DPool.get((_arg1.x - x), (_arg1.y - y), (_arg1.z - z));
var _local4:Number = (_local3.length - _local2);
if (_local4 > radius){
return (MotionData6DPool.get(_arg1.x, _arg1.y, _arg1.z, _arg1.vx, _arg1.vy, _arg1.vz));
};
_local3.length = (radius + _local2);
var _local5:Vec3D = Vec3DPool.get(_arg1.vx, _arg1.vy, _arg1.vz);
_local5.projectThis(_local3);
var _local6:Number = (1 + bounce);
Vec3DPool.recycle(_local3);
Vec3DPool.recycle(_local5);
return (MotionData6DPool.get((x + _local3.x), (y + _local3.y), (z + _local3.z), (_arg1.vx - (_local5.x * _local6)), (_arg1.vy - (_local5.y * _local6)), (_arg1.vz - (_local5.z * _local6))));
}
override public function toXML():XML{
var _local1:XML = super.toXML();
_local1.@x = x;
_local1.@y = y;
_local1.@z = z;
_local1.@radius = radius;
return (_local1);
}
}
}//package idv.cjcat.stardust.threeD.deflectors
Section 126
//WrappingCube (idv.cjcat.stardust.threeD.deflectors.WrappingCube)
package idv.cjcat.stardust.threeD.deflectors {
import idv.cjcat.stardust.common.xml.*;
import idv.cjcat.stardust.threeD.geom.*;
import idv.cjcat.stardust.threeD.particles.*;
public class WrappingCube extends Deflector3D {
public var depth:Number;
public var width:Number;
public var height:Number;
public var x:Number;
public var y:Number;
public var z:Number;
public function WrappingCube(_arg1:Number=0, _arg2:Number=0, _arg3:Number=0, _arg4:Number=640, _arg5:Number=480, _arg6:Number=480){
this.x = _arg1;
this.y = _arg2;
this.z = _arg3;
this.width = _arg4;
this.height = _arg5;
this.depth = _arg6;
}
override public function getXMLTagName():String{
return ("WrappingCube");
}
override public function parseXML(_arg1:XML, _arg2:XMLBuilder=null):void{
super.parseXML(_arg1, _arg2);
x = parseFloat(_arg1.@x);
y = parseFloat(_arg1.@y);
z = parseFloat(_arg1.@z);
width = parseFloat(_arg1.@width);
height = parseFloat(_arg1.@height);
depth = parseFloat(_arg1.@depth);
}
override protected function calculateMotionData6D(_arg1:Particle3D):MotionData6D{
var _local2:Number = x;
var _local3:Number = (x + width);
var _local4:Number = y;
var _local5:Number = (y + height);
var _local6:Number = z;
var _local7:Number = (z + depth);
var _local8:Number = (_arg1.x - x);
var _local9:Number = (_arg1.y - y);
var _local10:Number = (_arg1.z - z);
while (_local8 < 0) {
_local8 = (_local8 + width);
};
while (_local8 > width) {
_local8 = (_local8 - width);
};
while (_local9 < 0) {
_local9 = (_local9 + height);
};
while (_local9 > height) {
_local9 = (_local9 - height);
};
while (_local10 < 0) {
_local10 = (_local10 + depth);
};
while (_local10 > depth) {
_local10 = (_local10 - depth);
};
return (MotionData6DPool.get((x + _local8), (y + _local9), (z + _local10), _arg1.vx, _arg1.vy, _arg1.vz));
}
override public function toXML():XML{
var _local1:XML = super.toXML();
delete _local1.@bounce;
_local1.@x = x;
_local1.@y = y;
_local1.@z = z;
_local1.@width = width;
_local1.@height = height;
_local1.@depth = depth;
return (_local1);
}
}
}//package idv.cjcat.stardust.threeD.deflectors
Section 127
//Emitter3D (idv.cjcat.stardust.threeD.emitters.Emitter3D)
package idv.cjcat.stardust.threeD.emitters {
import idv.cjcat.stardust.common.initializers.*;
import idv.cjcat.stardust.common.actions.*;
import flash.utils.*;
import idv.cjcat.stardust.common.clocks.*;
import idv.cjcat.stardust.threeD.particles.*;
import idv.cjcat.stardust.common.emitters.*;
import idv.cjcat.stardust.*;
import flash.errors.*;
public class Emitter3D extends Emitter {
public function Emitter3D(_arg1:Clock=null){
super(_arg1);
particleSorter = Particle3DXSorter.getInstance();
factory = new Particle3DFactory();
factory.sd::usePool = true;
}
final override public function addInitializer(_arg1:Initializer):void{
if (!_arg1.supports3D){
throw (new IllegalOperationError(("This initializer does not support 3D: " + getQualifiedClassName((Object(_arg1).constructor as Class)))));
};
super.addInitializer(_arg1);
}
override public function getXMLTagName():String{
return ("Emitter3D");
}
final override public function addAction(_arg1:Action):void{
if (!_arg1.supports3D){
throw (new IllegalOperationError(("This action does not support 3D: " + getQualifiedClassName((Object(_arg1).constructor as Class)))));
};
super.addAction(_arg1);
}
}
}//package idv.cjcat.stardust.threeD.emitters
Section 128
//Vec3DEvent (idv.cjcat.stardust.threeD.events.Vec3DEvent)
package idv.cjcat.stardust.threeD.events {
import flash.events.*;
import idv.cjcat.stardust.threeD.geom.*;
public class Vec3DEvent extends Event {
private var _vec:Vec3D;
public static const CHANGE:String = "stardustVec3DChange";
public function Vec3DEvent(_arg1:String, _arg2:Vec3D){
super(_arg1);
_vec = _arg2;
}
public function get vec():Vec3D{
return (_vec);
}
}
}//package idv.cjcat.stardust.threeD.events
Section 129
//Field3D (idv.cjcat.stardust.threeD.fields.Field3D)
package idv.cjcat.stardust.threeD.fields {
import idv.cjcat.stardust.common.xml.*;
import idv.cjcat.stardust.common.*;
import idv.cjcat.stardust.threeD.geom.*;
import idv.cjcat.stardust.threeD.particles.*;
public class Field3D extends StardustElement {
public var active:Boolean;
public var massless:Boolean;
public function Field3D(){
active = true;
massless = true;
}
override public function getElementTypeXMLTag():XML{
return (<fields/>
);
}
override public function parseXML(_arg1:XML, _arg2:XMLBuilder=null):void{
super.parseXML(_arg1, _arg2);
active = (_arg1.@active == "action");
massless = (_arg1.@active == "massless");
}
final public function getMotionData3D(_arg1:Particle3D):MotionData3D{
var _local3:Number;
if (!active){
return (MotionData3DPool.get(0, 0, 0));
};
var _local2:MotionData3D = calculateMotionData3D(_arg1);
if (!massless){
_local3 = (1 / _arg1.mass);
_local2.x = (_local2.x * _local3);
_local2.y = (_local2.y * _local3);
_local2.z = (_local2.z * _local3);
};
return (_local2);
}
override public function getXMLTagName():String{
return ("Field3D");
}
override public function toXML():XML{
var _local1:XML = super.toXML();
_local1.@active = active;
_local1.@massless = massless;
return (_local1);
}
protected function calculateMotionData3D(_arg1:Particle3D):MotionData3D{
return (null);
}
}
}//package idv.cjcat.stardust.threeD.fields
Section 130
//RadialField3D (idv.cjcat.stardust.threeD.fields.RadialField3D)
package idv.cjcat.stardust.threeD.fields {
import idv.cjcat.stardust.common.xml.*;
import idv.cjcat.stardust.threeD.geom.*;
import idv.cjcat.stardust.threeD.particles.*;
public class RadialField3D extends Field3D {
public var strength:Number;
public var attenuationPower:Number;
public var epsilon:Number;
public var x:Number;
public var y:Number;
public var z:Number;
public function RadialField3D(_arg1:Number=0, _arg2:Number=0, _arg3:Number=0, _arg4:Number=1, _arg5:Number=0, _arg6:Number=1){
this.x = _arg1;
this.y = _arg2;
this.z = _arg3;
this.strength = _arg4;
this.attenuationPower = _arg5;
this.epsilon = _arg6;
}
override public function getXMLTagName():String{
return ("RadialField3D");
}
override public function parseXML(_arg1:XML, _arg2:XMLBuilder=null):void{
super.parseXML(_arg1, _arg2);
x = parseFloat(_arg1.@x);
y = parseFloat(_arg1.@y);
z = parseFloat(_arg1.@z);
strength = parseFloat(_arg1.@strength);
attenuationPower = parseFloat(_arg1.@attenuationPower);
epsilon = parseFloat(_arg1.@epsilon);
}
override protected function calculateMotionData3D(_arg1:Particle3D):MotionData3D{
var _local2:Vec3D = Vec3DPool.get((_arg1.x - x), (_arg1.y - y), (_arg1.x - z));
var _local3:Number = _local2.length;
if (_local3 < epsilon){
_local3 = epsilon;
};
_local2.length = (strength * Math.pow(_local3, (-0.5 * attenuationPower)));
Vec3DPool.recycle(_local2);
return (MotionData3DPool.get(_local2.x, _local2.y, _local2.z));
}
override public function toXML():XML{
var _local1:XML = super.toXML();
_local1.@x = x;
_local1.@y = y;
_local1.@z = z;
_local1.@strength = strength;
_local1.@attenuationPower = attenuationPower;
_local1.@epsilon = epsilon;
return (_local1);
}
}
}//package idv.cjcat.stardust.threeD.fields
Section 131
//UniformField3D (idv.cjcat.stardust.threeD.fields.UniformField3D)
package idv.cjcat.stardust.threeD.fields {
import idv.cjcat.stardust.common.xml.*;
import idv.cjcat.stardust.threeD.geom.*;
import idv.cjcat.stardust.threeD.particles.*;
public class UniformField3D extends Field3D {
public var x:Number;
public var y:Number;
public var z:Number;
public function UniformField3D(_arg1:Number=0, _arg2:Number=0, _arg3:Number=0){
this.x = _arg1;
this.y = _arg2;
this.z = _arg3;
}
override public function parseXML(_arg1:XML, _arg2:XMLBuilder=null):void{
super.parseXML(_arg1, _arg2);
x = parseFloat(_arg1.@x);
y = parseFloat(_arg1.@y);
z = parseFloat(_arg1.@z);
}
override public function getXMLTagName():String{
return ("UniformField3D");
}
override protected function calculateMotionData3D(_arg1:Particle3D):MotionData3D{
return (MotionData3DPool.get(x, y, z));
}
override public function toXML():XML{
var _local1:XML = super.toXML();
_local1.@x = x;
_local1.@y = y;
_local1.@z = z;
return (_local1);
}
}
}//package idv.cjcat.stardust.threeD.fields
Section 132
//Matrix3D (idv.cjcat.stardust.threeD.geom.Matrix3D)
package idv.cjcat.stardust.threeD.geom {
public class Matrix3D {
public var ty:Number;
public var tx:Number;
public var tz:Number;
private var temp:Matrix3D;
public var a:Number;
public var b:Number;
public var c:Number;
public var d:Number;
public var e:Number;
public var f:Number;
public var g:Number;
public var h:Number;
public var i:Number;
public function Matrix3D(_arg1:Number=1, _arg2:Number=0, _arg3:Number=0, _arg4:Number=0, _arg5:Number=1, _arg6:Number=0, _arg7:Number=0, _arg8:Number=0, _arg9:Number=1, _arg10:Number=0, _arg11:Number=0, _arg12:Number=0){
this.a = _arg1;
this.b = _arg2;
this.c = _arg3;
this.d = _arg4;
this.e = _arg5;
this.f = _arg6;
this.g = _arg7;
this.h = _arg8;
this.i = _arg9;
this.tx = _arg10;
this.ty = _arg11;
this.tz = _arg12;
}
public function concat(_arg1:Matrix3D):Matrix3D{
var _local2:Matrix3D = clone();
a = (((_local2.a * _arg1.a) + (_local2.b * _arg1.d)) + (_local2.c * _arg1.g));
b = (((_local2.a * _arg1.b) + (_local2.b * _arg1.e)) + (_local2.c * _arg1.h));
c = (((_local2.a * _arg1.c) + (_local2.b * _arg1.f)) + (_local2.c * _arg1.i));
d = (((_local2.d * _arg1.a) + (_local2.e * _arg1.d)) + (_local2.f * _arg1.g));
e = (((_local2.d * _arg1.b) + (_local2.e * _arg1.e)) + (_local2.f * _arg1.h));
f = (((_local2.d * _arg1.c) + (_local2.e * _arg1.f)) + (_local2.f * _arg1.i));
g = (((_local2.g * _arg1.a) + (_local2.h * _arg1.d)) + (_local2.i * _arg1.g));
h = (((_local2.g * _arg1.b) + (_local2.h * _arg1.e)) + (_local2.i * _arg1.h));
i = (((_local2.g * _arg1.c) + (_local2.h * _arg1.f)) + (_local2.i * _arg1.i));
tx = ((((_local2.a * _arg1.tx) + (_local2.b * _arg1.ty)) + (_local2.c * _arg1.tz)) + _local2.tx);
ty = ((((_local2.d * _arg1.tx) + (_local2.e * _arg1.ty)) + (_local2.f * _arg1.tz)) + _local2.ty);
tz = ((((_local2.g * _arg1.tx) + (_local2.h * _arg1.ty)) + (_local2.i * _arg1.tz)) + _local2.tz);
return (this);
}
public function translate(_arg1:Number, _arg2:Number, _arg3:Number):void{
tx = (tx + _arg1);
ty = (ty + _arg2);
tz = (tz + _arg3);
}
public function transformThisVec(_arg1:Vec3D):Vec3D{
_arg1.set(((((a * _arg1.x) + (b * _arg1.y)) + (c * _arg1.z)) + tx), ((((d * _arg1.x) + (e * _arg1.y)) + (f * _arg1.z)) + ty), ((((g * _arg1.x) + (h * _arg1.y)) + (i * _arg1.z)) + tz));
return (_arg1);
}
public function rotateX(_arg1:Number):void{
temp = Matrix3DPool.get(1, 0, 0, 0, Math.cos(_arg1), -(Math.sin(_arg1)), 0, Math.sin(_arg1), Math.cos(_arg1), 0, 0, 0);
concat(temp);
Matrix3DPool.recycle(temp);
temp = null;
}
public function rotateY(_arg1:Number):void{
temp = Matrix3DPool.get(Math.cos(_arg1), 0, Math.sin(_arg1), 0, 1, 0, -(Math.sin(_arg1)), 0, Math.cos(_arg1), 0, 0, 0);
concat(temp);
Matrix3DPool.recycle(temp);
temp = null;
}
public function rotateZ(_arg1:Number):void{
temp = Matrix3DPool.get(Math.cos(_arg1), -(Math.sin(_arg1)), 0, Math.sin(_arg1), Math.cos(_arg1), 0, 0, 0, 1, 0, 0, 0);
concat(temp);
Matrix3DPool.recycle(temp);
temp = null;
}
public function transform(_arg1:Vec3D):Vec3D{
return (transformThisVec(_arg1.clone()));
}
public function set(_arg1:Number=0, _arg2:Number=0, _arg3:Number=0, _arg4:Number=1, _arg5:Number=1, _arg6:Number=1, _arg7:Number=0, _arg8:Number=0, _arg9:Number=0, _arg10:int=0):void{
identity();
if (_arg1 != 0){
rotateX(_arg1);
};
if (_arg2 != 0){
rotateY(_arg2);
};
if (_arg3 != 0){
rotateZ(_arg3);
};
if (((((!((_arg4 == 1))) || (!((_arg5 == 1))))) || (!((_arg6 == 1))))){
scale(_arg4, _arg5, _arg6);
};
if (((((!((_arg7 == 0))) || (!((_arg8 == 0))))) || (!((_arg9 == 0))))){
translate(_arg7, _arg8, _arg9);
};
}
public function clone():Matrix3D{
return (new Matrix3D(a, b, c, d, e, f, g, h, i, tx, ty, tz));
}
public function scale(_arg1:Number, _arg2:Number, _arg3:Number):void{
temp = Matrix3DPool.get(_arg1, 0, 0, 0, _arg2, 0, 0, 0, _arg3, 0, 0, 0);
concat(temp);
Matrix3DPool.recycle(temp);
temp = null;
}
public function toString():String{
return ((((((((((((((((((((((((("[Matrix3D a=" + a) + ", b=") + b) + ", c=") + c) + ", d=") + d) + ", e=") + e) + ", f=") + f) + ", g=") + g) + ", h=") + h) + ", i=") + i) + ", tx=") + tx) + ", ty=") + ty) + ", tz=") + tz) + "]"));
}
public function identity():void{
a = 1;
b = 0;
c = 0;
d = 0;
e = 1;
f = 0;
g = 0;
h = 0;
i = 1;
tx = (ty = (tz = 0));
}
}
}//package idv.cjcat.stardust.threeD.geom
Section 133
//Matrix3DPool (idv.cjcat.stardust.threeD.geom.Matrix3DPool)
package idv.cjcat.stardust.threeD.geom {
public class Matrix3DPool {
private static var _vec:Array = [new Matrix3D()];
private static var _position:int = 0;
public static function recycle(_arg1:Matrix3D):void{
if (_position == 0){
return;
};
if (!_arg1){
return;
};
_vec[(_position - 1)] = _arg1;
_position--;
if (_position < 0){
_position = 0;
};
if (_vec.length >= 16){
if (_position < (_vec.length >> 4)){
_vec.length = (_vec.length >> 1);
};
};
}
public static function get(_arg1:Number=1, _arg2:Number=0, _arg3:Number=0, _arg4:Number=0, _arg5:Number=1, _arg6:Number=0, _arg7:Number=0, _arg8:Number=0, _arg9:Number=1, _arg10:Number=0, _arg11:Number=0, _arg12:Number=0):Matrix3D{
var _local14:int;
if (_position == _vec.length){
_vec.length = (_vec.length << 1);
_local14 = _position;
while (_local14 < _vec.length) {
_vec[_local14] = new Matrix3D();
_local14++;
};
};
_position++;
var _local13:Matrix3D = (_vec[(_position - 1)] as Matrix3D);
_local13.a = _arg1;
_local13.b = _arg2;
_local13.c = _arg3;
_local13.d = _arg4;
_local13.e = _arg5;
_local13.f = _arg6;
_local13.g = _arg7;
_local13.h = _arg8;
_local13.i = _arg9;
_local13.tx = _arg10;
_local13.ty = _arg11;
_local13.tz = _arg12;
return (_local13);
}
}
}//package idv.cjcat.stardust.threeD.geom
Section 134
//MotionData3D (idv.cjcat.stardust.threeD.geom.MotionData3D)
package idv.cjcat.stardust.threeD.geom {
public class MotionData3D {
public var x:Number;
public var y:Number;
public var z:Number;
public function MotionData3D(_arg1:Number=0, _arg2:Number=0, _arg3:Number=0){
this.x = _arg1;
this.y = _arg2;
this.z = _arg3;
}
}
}//package idv.cjcat.stardust.threeD.geom
Section 135
//MotionData3DPool (idv.cjcat.stardust.threeD.geom.MotionData3DPool)
package idv.cjcat.stardust.threeD.geom {
public class MotionData3DPool {
private static var _vec:Array = [new MotionData3D()];
private static var _position:int = 0;
public static function recycle(_arg1:MotionData3D):void{
if (_position == 0){
return;
};
if (!_arg1){
return;
};
_vec[(_position - 1)] = _arg1;
_position--;
if (_position < 0){
_position = 0;
};
if (_vec.length >= 16){
if (_position < (_vec.length >> 4)){
_vec.length = (_vec.length >> 1);
};
};
}
public static function get(_arg1:Number=0, _arg2:Number=0, _arg3:Number=0):MotionData3D{
var _local5:int;
if (_position == _vec.length){
_vec.length = (_vec.length << 1);
_local5 = _position;
while (_local5 < _vec.length) {
_vec[_local5] = new MotionData3D();
_local5++;
};
};
_position++;
var _local4:MotionData3D = (_vec[(_position - 1)] as MotionData3D);
_local4.x = _arg1;
_local4.y = _arg2;
_local4.z = _arg3;
return (_local4);
}
}
}//package idv.cjcat.stardust.threeD.geom
Section 136
//MotionData6D (idv.cjcat.stardust.threeD.geom.MotionData6D)
package idv.cjcat.stardust.threeD.geom {
public class MotionData6D {
public var vx:Number;
public var vy:Number;
public var vz:Number;
public var x:Number;
public var y:Number;
public var z:Number;
public function MotionData6D(_arg1:Number=0, _arg2:Number=0, _arg3:Number=0, _arg4:Number=0, _arg5:Number=0, _arg6:Number=0){
this.x = _arg1;
this.y = _arg2;
this.z = _arg3;
this.vx = _arg4;
this.vy = _arg5;
this.vz = _arg6;
}
}
}//package idv.cjcat.stardust.threeD.geom
Section 137
//MotionData6DPool (idv.cjcat.stardust.threeD.geom.MotionData6DPool)
package idv.cjcat.stardust.threeD.geom {
public class MotionData6DPool {
private static var _vec:Array = [new MotionData6D()];
private static var _position:int = 0;
public static function recycle(_arg1:MotionData6D):void{
if (_position == 0){
return;
};
if (!_arg1){
return;
};
_vec[(_position - 1)] = _arg1;
_position--;
if (_position < 0){
_position = 0;
};
if (_vec.length >= 16){
if (_position < (_vec.length >> 4)){
_vec.length = (_vec.length >> 1);
};
};
}
public static function get(_arg1:Number=0, _arg2:Number=0, _arg3:Number=0, _arg4:Number=0, _arg5:Number=0, _arg6:Number=0):MotionData6D{
var _local8:int;
if (_position == _vec.length){
_vec.length = (_vec.length << 1);
_local8 = _position;
while (_local8 < _vec.length) {
_vec[_local8] = new MotionData6D();
_local8++;
};
};
_position++;
var _local7:MotionData6D = (_vec[(_position - 1)] as MotionData6D);
_local7.x = _arg1;
_local7.y = _arg2;
_local7.z = _arg3;
_local7.vx = _arg4;
_local7.vy = _arg5;
_local7.vz = _arg6;
return (_local7);
}
}
}//package idv.cjcat.stardust.threeD.geom
Section 138
//Vec3D (idv.cjcat.stardust.threeD.geom.Vec3D)
package idv.cjcat.stardust.threeD.geom {
import flash.events.*;
import idv.cjcat.stardust.common.math.*;
import idv.cjcat.stardust.threeD.events.*;
public class Vec3D extends EventDispatcher {
private var _z:Number;
private var _y:Number;
private var _x:Number;
public function Vec3D(_arg1:Number=0, _arg2:Number=0, _arg3:Number=0){
_x = _arg1;
_y = _arg2;
_z = _arg3;
}
public function cross(_arg1:Vec3D):Vec3D{
return (new Vec3D(((_y * _arg1._z) - (_z * _arg1._y)), ((_z * _arg1._x) - (_x * _arg1._z)), ((_x * _arg1._y) - (_y * _arg1._x))));
}
override public function toString():String{
return (((((((("[Vec3D" + " x=") + _x) + " y=") + _y) + " z=") + _z) + "]"));
}
public function get y():Number{
return (_y);
}
public function dot(_arg1:Vec3D):Number{
return ((((_x * _arg1._x) + (_y * _arg1._y)) + (_z * _arg1._z)));
}
public function set length(_arg1:Number):void{
if ((((((_x == 0)) && ((_y == 0)))) && ((_z == 0)))){
return;
};
var _local2:Number = (_arg1 / length);
_x = (_x * _local2);
_y = (_y * _local2);
_z = (_z * _local2);
dispatchEvent(new Vec3DEvent(Vec3DEvent.CHANGE, this));
}
public function projectThis(_arg1:Vec3D):void{
var _local2:Vec3D = Vec3DPool.get(_arg1._x, _arg1._y, _arg1._z);
_local2.length = 1;
_local2.length = dot(_local2);
_x = _local2._x;
_y = _local2._y;
_z = _local2._z;
Vec3DPool.recycle(_local2);
}
public function project(_arg1:Vec3D):Vec3D{
var _local2:Vec3D = clone();
_local2.projectThis(_arg1);
return (_local2);
}
public function rotate(_arg1:Vec3D, _arg2:Number, _arg3:Boolean=false):Vec3D{
if (!_arg3){
_arg2 = (_arg2 * StardustMath.DEGREE_TO_RADIAN);
};
var _local4:Vec3D = _arg1.unitVec();
var _local5:Number = this.dot(_local4);
var _local6:Vec3D = new Vec3D((_local5 * _local4._x), (_local5 * _local4._y), (_local5 * _local4._z));
var _local7:Vec3D = new Vec3D((_x - _local6._x), (_y - _local6._y), (_z - _local6._z));
var _local8:Vec3D = _local4.cross(this);
var _local9:Number = Math.cos(_arg2);
var _local10:Number = Math.sin(_arg2);
return (new Vec3D((((_local9 * _local7._x) + (_local10 * _local8._x)) + _local6._x), (((_local9 * _local7._y) + (_local10 * _local8._y)) + _local6._y), (((_local9 * _local7._z) + (_local10 * _local8._z)) + _local6._z)));
}
public function rotateYThis(_arg1:Number, _arg2:Boolean=false):void{
if (!_arg2){
_arg1 = (_arg1 * StardustMath.DEGREE_TO_RADIAN);
};
var _local3:Number = _z;
_z = ((_local3 * Math.cos(_arg1)) - (_x * Math.sin(_arg1)));
_x = ((_local3 * Math.sin(_arg1)) + (_x * Math.cos(_arg1)));
dispatchEvent(new Vec3DEvent(Vec3DEvent.CHANGE, this));
}
public function rotateX(_arg1:Number, _arg2:Boolean=false):Vec3D{
var _local3:Vec3D = new Vec3D(_x, _y, _z);
_local3.rotateXThis(_arg1, _arg2);
return (_local3);
}
public function rotateY(_arg1:Number, _arg2:Boolean=false):Vec3D{
var _local3:Vec3D = new Vec3D(_x, _y, _z);
_local3.rotateYThis(_arg1, _arg2);
return (_local3);
}
public function rotateZ(_arg1:Number, _arg2:Boolean=false):Vec3D{
var _local3:Vec3D = new Vec3D(_x, _y, _z);
_local3.rotateZThis(_arg1, _arg2);
return (_local3);
}
public function rotateThis(_arg1:Vec3D, _arg2:Number, _arg3:Boolean=false):void{
var _local4:Vec3D = rotate(_arg1, _arg2, _arg3);
_x = _local4._x;
_y = _local4._y;
_z = _local4._z;
dispatchEvent(new Vec3DEvent(Vec3DEvent.CHANGE, this));
}
public function rotateXThis(_arg1:Number, _arg2:Boolean=false):void{
if (!_arg2){
_arg1 = (_arg1 * StardustMath.DEGREE_TO_RADIAN);
};
var _local3:Number = _y;
_y = ((_local3 * Math.cos(_arg1)) - (_z * Math.sin(_arg1)));
_z = ((_local3 * Math.sin(_arg1)) + (_z * Math.cos(_arg1)));
dispatchEvent(new Vec3DEvent(Vec3DEvent.CHANGE, this));
}
public function clone():Vec3D{
return (new Vec3D(_x, _y, _z));
}
public function get length():Number{
return (Math.sqrt((((_x * _x) + (_y * _y)) + (_z * _z))));
}
public function set(_arg1:Number, _arg2:Number, _arg3:Number):void{
_x = _arg1;
_y = _arg2;
_z = _arg3;
dispatchEvent(new Vec3DEvent(Vec3DEvent.CHANGE, this));
}
public function rotateZThis(_arg1:Number, _arg2:Boolean=false):void{
if (!_arg2){
_arg1 = (_arg1 * StardustMath.DEGREE_TO_RADIAN);
};
var _local3:Number = _x;
_x = ((_local3 * Math.cos(_arg1)) - (_y * Math.sin(_arg1)));
_y = ((_local3 * Math.sin(_arg1)) + (_y * Math.cos(_arg1)));
dispatchEvent(new Vec3DEvent(Vec3DEvent.CHANGE, this));
}
public function set x(_arg1:Number):void{
_x = _arg1;
dispatchEvent(new Vec3DEvent(Vec3DEvent.CHANGE, this));
}
public function set y(_arg1:Number):void{
_y = _arg1;
dispatchEvent(new Vec3DEvent(Vec3DEvent.CHANGE, this));
}
public function set z(_arg1:Number):void{
_z = _arg1;
dispatchEvent(new Vec3DEvent(Vec3DEvent.CHANGE, this));
}
public function unitVec():Vec3D{
if (length == 0){
return (new Vec3D());
};
var _local1:Number = (1 / length);
return (new Vec3D((_x * _local1), (_y * _local1), (_z * _local1)));
}
public function get x():Number{
return (_x);
}
public function get z():Number{
return (_z);
}
public static function angleBetween(_arg1:Vec3D, _arg2:Vec3D, _arg3:Boolean=false):Number{
var _local4:Number = Math.acos((_arg1.dot(_arg2) / (_arg1.length * _arg2.length)));
if (!_arg3){
_local4 = (_local4 * StardustMath.RADIAN_TO_DEGREE);
};
return (_local4);
}
}
}//package idv.cjcat.stardust.threeD.geom
Section 139
//Vec3DPool (idv.cjcat.stardust.threeD.geom.Vec3DPool)
package idv.cjcat.stardust.threeD.geom {
public class Vec3DPool {
private static var _vec:Array = [new Vec3D()];
private static var _position:int = 0;
public static function recycle(_arg1:Vec3D):void{
if (_position == 0){
return;
};
if (!_arg1){
return;
};
_vec[(_position - 1)] = _arg1;
_position--;
if (_position < 0){
_position = 0;
};
if (_vec.length >= 16){
if (_position < (_vec.length >> 4)){
_vec.length = (_vec.length >> 1);
};
};
}
public static function get(_arg1:Number=0, _arg2:Number=0, _arg3:Number=0):Vec3D{
var _local5:int;
if (_position == _vec.length){
_vec.length = (_vec.length << 1);
_local5 = _position;
while (_local5 < _vec.length) {
_vec[_local5] = new Vec3D();
_local5++;
};
};
_position++;
var _local4:Vec3D = (_vec[(_position - 1)] as Vec3D);
_local4.x = _arg1;
_local4.y = _arg2;
_local4.z = _arg3;
return (_local4);
}
}
}//package idv.cjcat.stardust.threeD.geom
Section 140
//ZData (idv.cjcat.stardust.threeD.geom.ZData)
package idv.cjcat.stardust.threeD.geom {
import flash.display.*;
import idv.cjcat.stardust.threeD.particles.*;
public class ZData {
public var displayObject:DisplayObject;
public var particle:Particle3D;
public var cameraVelocity:Vec3D;
public var cameraDiff:Vec3D;
public function ZData(){
cameraDiff = new Vec3D();
cameraVelocity = new Vec3D();
super();
}
}
}//package idv.cjcat.stardust.threeD.geom
Section 141
//ZDataPool (idv.cjcat.stardust.threeD.geom.ZDataPool)
package idv.cjcat.stardust.threeD.geom {
import flash.display.*;
import idv.cjcat.stardust.threeD.particles.*;
public class ZDataPool {
private static var _vec:Array = [new ZData()];
private static var _position:int = 0;
public static function recycle(_arg1:ZData):void{
_arg1.displayObject = null;
if (_position == 0){
return;
};
if (!_arg1){
return;
};
_vec[(_position - 1)] = _arg1;
_position--;
if (_position < 0){
_position = 0;
};
}
public static function get(_arg1:DisplayObject, _arg2:Particle3D, _arg3:Number=0, _arg4:Number=0, _arg5:Number=0):ZData{
var _local7:int;
if (_position == _vec.length){
_vec.length = (_vec.length << 1);
_local7 = _position;
while (_local7 < _vec.length) {
_vec[_local7] = new ZData();
_local7++;
};
};
_position++;
var _local6:ZData = (_vec[(_position - 1)] as ZData);
_local6.displayObject = _arg1;
_local6.particle = _arg2;
_local6.cameraDiff.x = _arg3;
_local6.cameraDiff.y = _arg4;
_local6.cameraDiff.z = _arg5;
return (_local6);
}
}
}//package idv.cjcat.stardust.threeD.geom
Section 142
//DisplayObjectClass3D (idv.cjcat.stardust.threeD.initializers.DisplayObjectClass3D)
package idv.cjcat.stardust.threeD.initializers {
import idv.cjcat.stardust.common.particles.*;
import idv.cjcat.stardust.common.utils.*;
public class DisplayObjectClass3D extends Initializer3D {
public var constructorParams:Array;
public var displayObjectClass:Class;
public function DisplayObjectClass3D(_arg1:Class=null, _arg2:Array=null){
this.displayObjectClass = _arg1;
this.constructorParams = _arg2;
}
override public function getXMLTagName():String{
return ("DisplayObjectClass3D");
}
override public function initialize(_arg1:Particle):void{
if (!displayObjectClass){
return;
};
_arg1.target = construct(displayObjectClass, constructorParams);
}
}
}//package idv.cjcat.stardust.threeD.initializers
Section 143
//Initializer3D (idv.cjcat.stardust.threeD.initializers.Initializer3D)
package idv.cjcat.stardust.threeD.initializers {
import idv.cjcat.stardust.common.initializers.*;
public class Initializer3D extends Initializer {
public function Initializer3D(){
_supports2D = false;
priority = Initializer3DPriority.getInstance().getPriority((Object(this).constructor as Class));
}
}
}//package idv.cjcat.stardust.threeD.initializers
Section 144
//Initializer3DPriority (idv.cjcat.stardust.threeD.initializers.Initializer3DPriority)
package idv.cjcat.stardust.threeD.initializers {
import idv.cjcat.stardust.common.initializers.*;
public class Initializer3DPriority extends InitializerPriority {
private static var _instance:Initializer3DPriority;
final override protected function populatePriorities():void{
priorities[DisplayObjectClass3D] = 1;
}
public static function getInstance():Initializer3DPriority{
if (!_instance){
_instance = new (Initializer3DPriority);
};
return (_instance);
}
}
}//package idv.cjcat.stardust.threeD.initializers
Section 145
//Omega3D (idv.cjcat.stardust.threeD.initializers.Omega3D)
package idv.cjcat.stardust.threeD.initializers {
import idv.cjcat.stardust.common.xml.*;
import idv.cjcat.stardust.common.particles.*;
import idv.cjcat.stardust.threeD.particles.*;
import idv.cjcat.stardust.common.math.*;
public class Omega3D extends Initializer3D {
private var _randomX:Random;
private var _randomY:Random;
private var _randomZ:Random;
public function Omega3D(_arg1:Random=null, _arg2:Random=null, _arg3:Random=null){
this.randomX = _arg1;
this.randomY = _arg2;
this.randomZ = _arg3;
}
override public function getRelatedObjects():Array{
return ([_randomX, _randomY, _randomZ]);
}
override public function getXMLTagName():String{
return ("Omega3D");
}
public function set randomZ(_arg1:Random):void{
if (!_arg1){
_arg1 = new UniformRandom(0, 0);
};
_randomZ = _arg1;
}
public function set randomX(_arg1:Random):void{
if (!_arg1){
_arg1 = new UniformRandom(0, 0);
};
_randomX = _arg1;
}
override public function parseXML(_arg1:XML, _arg2:XMLBuilder=null):void{
super.parseXML(_arg1, _arg2);
randomX = (_arg2.getElementByName(_arg1.@randomX) as Random);
randomY = (_arg2.getElementByName(_arg1.@randomY) as Random);
randomZ = (_arg2.getElementByName(_arg1.@randomZ) as Random);
}
public function set randomY(_arg1:Random):void{
if (!_arg1){
_arg1 = new UniformRandom(0, 0);
};
_randomY = _arg1;
}
public function get randomX():Random{
return (_randomX);
}
override public function toXML():XML{
var _local1:XML = super.toXML();
_local1.@randomX = _randomX.name;
_local1.@randomY = _randomY.name;
_local1.@randomZ = _randomZ.name;
return (_local1);
}
public function get randomY():Random{
return (_randomY);
}
public function get randomZ():Random{
return (_randomZ);
}
override public function initialize(_arg1:Particle):void{
var _local2:Particle3D = (_arg1 as Particle3D);
_local2.omegaX = _randomX.random();
_local2.omegaY = _randomY.random();
_local2.omegaZ = _randomZ.random();
}
}
}//package idv.cjcat.stardust.threeD.initializers
Section 146
//Position3D (idv.cjcat.stardust.threeD.initializers.Position3D)
package idv.cjcat.stardust.threeD.initializers {
import idv.cjcat.stardust.common.xml.*;
import idv.cjcat.stardust.common.particles.*;
import idv.cjcat.stardust.threeD.geom.*;
import idv.cjcat.stardust.threeD.particles.*;
import idv.cjcat.stardust.threeD.zones.*;
public class Position3D extends Initializer3D {
private var _zone:Zone3D;
public function Position3D(_arg1:Zone3D=null){
this.zone = _arg1;
}
override public function initialize(_arg1:Particle):void{
var _local2:Particle3D;
var _local3:MotionData3D;
_local2 = (_arg1 as Particle3D);
_local3 = _zone.getPoint();
_local2.x = _local3.x;
_local2.y = _local3.y;
_local2.z = _local3.z;
MotionData3DPool.recycle(_local3);
}
override public function parseXML(_arg1:XML, _arg2:XMLBuilder=null):void{
super.parseXML(_arg1, _arg2);
zone = (_arg2.getElementByName(_arg1.@zone) as Zone3D);
}
override public function getXMLTagName():String{
return ("Position3D");
}
public function set zone(_arg1:Zone3D):void{
if (!_arg1){
_arg1 = new SinglePoint3D(0, 0, 0);
};
_zone = _arg1;
}
public function get zone():Zone3D{
return (_zone);
}
override public function toXML():XML{
var _local1:XML = super.toXML();
_local1.@zone = _zone.name;
return (_local1);
}
override public function getRelatedObjects():Array{
return ([_zone]);
}
}
}//package idv.cjcat.stardust.threeD.initializers
Section 147
//Rotation3D (idv.cjcat.stardust.threeD.initializers.Rotation3D)
package idv.cjcat.stardust.threeD.initializers {
import idv.cjcat.stardust.common.xml.*;
import idv.cjcat.stardust.common.particles.*;
import idv.cjcat.stardust.threeD.particles.*;
import idv.cjcat.stardust.common.math.*;
public class Rotation3D extends Initializer3D {
private var _randomX:Random;
private var _randomY:Random;
private var _randomZ:Random;
public function Rotation3D(_arg1:Random=null, _arg2:Random=null, _arg3:Random=null){
this.randomX = _arg1;
this.randomY = _arg2;
this.randomZ = _arg3;
}
override public function getRelatedObjects():Array{
return ([_randomX, _randomY, _randomZ]);
}
override public function getXMLTagName():String{
return ("Rotation3D");
}
public function set randomZ(_arg1:Random):void{
if (!_arg1){
_arg1 = new UniformRandom(0, 0);
};
_randomZ = _arg1;
}
public function set randomX(_arg1:Random):void{
if (!_arg1){
_arg1 = new UniformRandom(0, 0);
};
_randomX = _arg1;
}
override public function parseXML(_arg1:XML, _arg2:XMLBuilder=null):void{
super.parseXML(_arg1, _arg2);
randomX = (_arg2.getElementByName(_arg1.@randomX) as Random);
randomY = (_arg2.getElementByName(_arg1.@randomY) as Random);
randomZ = (_arg2.getElementByName(_arg1.@randomZ) as Random);
}
public function set randomY(_arg1:Random):void{
if (!_arg1){
_arg1 = new UniformRandom(0, 0);
};
_randomY = _arg1;
}
public function get randomX():Random{
return (_randomX);
}
override public function toXML():XML{
var _local1:XML = super.toXML();
_local1.@randomX = _randomX.name;
_local1.@randomY = _randomY.name;
_local1.@randomZ = _randomZ.name;
return (_local1);
}
public function get randomY():Random{
return (_randomY);
}
public function get randomZ():Random{
return (_randomZ);
}
override public function initialize(_arg1:Particle):void{
var _local2:Particle3D = (_arg1 as Particle3D);
_local2.rotationX = randomX.random();
_local2.rotationY = randomY.random();
_local2.rotationZ = randomZ.random();
}
}
}//package idv.cjcat.stardust.threeD.initializers
Section 148
//Velocity3D (idv.cjcat.stardust.threeD.initializers.Velocity3D)
package idv.cjcat.stardust.threeD.initializers {
import idv.cjcat.stardust.common.xml.*;
import idv.cjcat.stardust.common.particles.*;
import idv.cjcat.stardust.threeD.geom.*;
import idv.cjcat.stardust.threeD.particles.*;
import idv.cjcat.stardust.threeD.zones.*;
public class Velocity3D extends Initializer3D {
private var _zone:Zone3D;
public function Velocity3D(_arg1:Zone3D=null){
this.zone = _arg1;
}
override public function initialize(_arg1:Particle):void{
var _local2:Particle3D = (_arg1 as Particle3D);
var _local3:MotionData3D = zone.getPoint();
_local2.vx = _local3.x;
_local2.vy = _local3.y;
_local2.vz = _local3.z;
MotionData3DPool.recycle(_local3);
}
override public function parseXML(_arg1:XML, _arg2:XMLBuilder=null):void{
super.parseXML(_arg1, _arg2);
zone = (_arg2.getElementByName(_arg1.@zone) as Zone3D);
}
override public function getXMLTagName():String{
return ("Velocity3D");
}
public function set zone(_arg1:Zone3D):void{
if (!_arg1){
_arg1 = new SinglePoint3D(0, 0);
};
_zone = _arg1;
}
public function get zone():Zone3D{
return (_zone);
}
override public function toXML():XML{
var _local1:XML = super.toXML();
_local1.@zone = zone.name;
return (_local1);
}
override public function getRelatedObjects():Array{
return ([_zone]);
}
}
}//package idv.cjcat.stardust.threeD.initializers
Section 149
//Particle3D (idv.cjcat.stardust.threeD.particles.Particle3D)
package idv.cjcat.stardust.threeD.particles {
import idv.cjcat.stardust.common.particles.*;
public class Particle3D extends Particle {
public var vx:Number;
public var vy:Number;
public var vz:Number;
public var omegaX:Number;
public var omegaZ:Number;
public var rotationX:Number;
public var rotationY:Number;
public var rotationZ:Number;
public var omegaY:Number;
public var screenX:Number;
public var screenY:Number;
public var screenVX:Number;
public var screenVY:Number;
public var x:Number;
public var y:Number;
public var z:Number;
override public function init():void{
super.init();
x = 0;
y = 0;
z = 0;
screenX = 0;
screenY = 0;
vx = 0;
vy = 0;
vz = 0;
screenVX = 0;
screenVY = 0;
rotationX = 0;
rotationY = 0;
rotationZ = 0;
omegaX = 0;
omegaY = 0;
omegaZ = 0;
}
}
}//package idv.cjcat.stardust.threeD.particles
Section 150
//Particle3DFactory (idv.cjcat.stardust.threeD.particles.Particle3DFactory)
package idv.cjcat.stardust.threeD.particles {
import idv.cjcat.stardust.common.initializers.*;
import flash.utils.*;
import idv.cjcat.stardust.common.particles.*;
import flash.errors.*;
public class Particle3DFactory extends ParticleFactory {
public function Particle3DFactory(){
particlePool = Particle3DPool.getInstance();
}
override public function addInitializer(_arg1:Initializer):void{
if (!_arg1.supports3D){
throw (new IllegalOperationError(("This initializer does not support 3D: " + getQualifiedClassName((Object(_arg1).constructor as Class)))));
};
super.addInitializer(_arg1);
}
}
}//package idv.cjcat.stardust.threeD.particles
Section 151
//Particle3DPool (idv.cjcat.stardust.threeD.particles.Particle3DPool)
package idv.cjcat.stardust.threeD.particles {
import idv.cjcat.stardust.common.particles.*;
public class Particle3DPool extends ParticlePool {
private static var _instance:Particle3DPool;
public function Particle3DPool(_arg1:Class){
super(_arg1);
}
public static function getInstance():Particle3DPool{
if (!_instance){
_instance = new Particle3DPool(Particle3D);
};
return (_instance);
}
}
}//package idv.cjcat.stardust.threeD.particles
Section 152
//Particle3DXSorter (idv.cjcat.stardust.threeD.particles.Particle3DXSorter)
package idv.cjcat.stardust.threeD.particles {
import idv.cjcat.stardust.common.particles.*;
public class Particle3DXSorter extends ParticleSorter {
private static var _instance:Particle3DXSorter;
override public function sort(_arg1:Array):void{
_arg1.sortOn("x", Array.NUMERIC);
}
public static function getInstance():Particle3DXSorter{
if (!_instance){
_instance = new (Particle3DXSorter);
};
return (_instance);
}
}
}//package idv.cjcat.stardust.threeD.particles
Section 153
//DisplayObjectRenderer3D (idv.cjcat.stardust.threeD.renderers.DisplayObjectRenderer3D)
package idv.cjcat.stardust.threeD.renderers {
import flash.display.*;
import idv.cjcat.stardust.common.xml.*;
import idv.cjcat.stardust.threeD.geom.*;
import idv.cjcat.stardust.threeD.particles.*;
import idv.cjcat.stardust.common.events.*;
import idv.cjcat.stardust.threeD.cameras.*;
import idv.cjcat.stardust.common.renderers.*;
public class DisplayObjectRenderer3D extends Renderer {
public var container:DisplayObjectContainer;
private var _camera:Camera3D;
public var forceParentChange:Boolean;
private var _zdList:Array;
private var _cameraDiff:Vec3D;
private var _cameraMatrix:Matrix3D;
public function DisplayObjectRenderer3D(_arg1:DisplayObjectContainer=null, _arg2:Camera3D=null){
_cameraMatrix = new Matrix3D();
_cameraDiff = new Vec3D();
_zdList = [];
super();
this.container = _arg1;
this.camera = _arg2;
forceParentChange = false;
}
override public function toXML():XML{
var _local1:XML = super.toXML();
_local1.@forceParentChange = forceParentChange;
return (_local1);
}
override public function parseXML(_arg1:XML, _arg2:XMLBuilder=null):void{
super.parseXML(_arg1, _arg2);
forceParentChange = (_arg1.@forceParentChange == "true");
}
public function set camera(_arg1:Camera3D):void{
if (!_arg1){
_arg1 = new Camera3D();
_arg1.position.set(0, 0, -1000);
};
_camera = _arg1;
}
private function renderDisplayObject(_arg1:Particle3D):void{
var _local2:DisplayObject = (_arg1.target as DisplayObject);
if (!_local2){
return;
};
_local2.x = _arg1.screenX;
_local2.y = _arg1.screenY;
_local2.rotation = _arg1.rotationZ;
_local2.scaleX = (_local2.scaleY = (_arg1.scale * Number(_arg1.dictionary[DisplayObjectRenderer3D])));
_local2.alpha = _arg1.alpha;
}
public function get camera():Camera3D{
return (_camera);
}
final override protected function particlesRemoved(_arg1:EmitterEvent):void{
var _local2:Particle3D;
var _local3:DisplayObject;
for each (_local2 in _arg1.particles) {
_local3 = (_local2.target as DisplayObject);
if (!_local3){
} else {
DisplayObjectContainer(_local3.parent).removeChild(_local3);
};
};
}
private function zdSorter(_arg1:ZData, _arg2:ZData):Number{
if (_arg1.cameraDiff.z > _arg2.cameraDiff.z){
return (-1);
};
return (1);
}
final override protected function render(_arg1:EmitterEvent):void{
var _local2:int;
var _local3:Particle3D;
var _local4:ZData;
var _local5:Number;
_cameraMatrix.identity();
_cameraMatrix.rotateX(Math.atan2(_camera.direction.y, Math.sqrt(((_camera.direction.x * _camera.direction.x) + (_camera.direction.z * _camera.direction.z)))));
_cameraMatrix.rotateY(Math.atan2(-(_camera.direction.x), _camera.direction.z));
_zdList.length = _arg1.particles.length;
_local2 = 0;
for each (_local3 in _arg1.particles) {
_cameraDiff.set((_local3.x - _camera.position.x), (_local3.y - _camera.position.y), (_local3.z - _camera.position.z));
_cameraMatrix.transformThisVec(_cameraDiff);
_local3.dictionary[ZData] = (_zdList[_local2] = ZDataPool.get((_local3.target as DisplayObject), _local3, _cameraDiff.x, _cameraDiff.y, _cameraDiff.z));
_cameraDiff.set(_local3.vx, _local3.vy, _local3.vz);
_cameraMatrix.transformThisVec(_cameraDiff);
_local3.dictionary["screenVel"] = _cameraDiff.clone();
_local2++;
};
_zdList.sort(zdSorter);
for each (_local4 in _zdList) {
container.addChild(_local4.displayObject);
if (_local4.cameraDiff.z < 0){
_local4.displayObject.visible = false;
} else {
_local4.displayObject.visible = true;
};
if (_camera.usePerspective){
_local5 = (_camera.zoom / ((_local4.cameraDiff.z / _camera.focalLength) + 1));
_local4.particle.screenX = (_local4.cameraDiff.x * _local5);
_local4.particle.screenY = (_local4.cameraDiff.y * _local5);
_local4.particle.dictionary[DisplayObjectRenderer3D] = (_local5 * _local4.particle.initScale);
} else {
_local4.particle.screenX = (_camera.zoom * _local4.cameraDiff.x);
_local4.particle.screenY = (_camera.zoom * _local4.cameraDiff.y);
_local4.particle.dictionary[DisplayObjectRenderer3D] = 1;
};
renderDisplayObject(_local4.particle);
ZDataPool.recycle(_local4);
};
}
final override protected function particlesCreated(_arg1:EmitterEvent):void{
var _local2:Particle3D;
var _local3:DisplayObject;
if (!container){
return;
};
for each (_local2 in _arg1.particles) {
_local3 = (_local2.target as DisplayObject);
if (!_local3){
} else {
if (!forceParentChange){
//unresolved if
} else {
container.addChild(_local3);
};
};
};
}
override public function getXMLTagName():String{
return ("DisplayObjectRenderer3D");
}
}
}//package idv.cjcat.stardust.threeD.renderers
Section 154
//CubeZone (idv.cjcat.stardust.threeD.zones.CubeZone)
package idv.cjcat.stardust.threeD.zones {
import idv.cjcat.stardust.common.xml.*;
import idv.cjcat.stardust.threeD.geom.*;
import idv.cjcat.stardust.common.math.*;
public class CubeZone extends Zone3D {
private var _depth:Number;
private var _height:Number;
private var _width:Number;
private var _randomX:Random;
private var _randomY:Random;
private var _randomZ:Random;
public var y:Number;
public var z:Number;
public var x:Number;
public function CubeZone(_arg1:Number=0, _arg2:Number=0, _arg3:Number=0, _arg4:Number=640, _arg5:Number=480, _arg6:Number=480, _arg7:Random=null, _arg8:Random=null, _arg9:Random=null){
this.x = _arg1;
this.y = _arg2;
this.z = _arg3;
this.width = _arg4;
this.height = _arg5;
this.depth = _arg6;
this.randomX = _arg7;
this.randomY = _arg8;
this.randomZ = _arg9;
}
public function get depth():Number{
return (_depth);
}
override protected function updateVolume():void{
volume = ((_width * _height) * _depth);
}
public function get width():Number{
return (_width);
}
override public function calculateMotionData3D():MotionData3D{
randomX.setRange(x, (x + _width));
randomY.setRange(y, (y + _height));
randomZ.setRange(z, (z + _depth));
return (new MotionData3D(randomX.random(), randomY.random(), randomZ.random()));
}
public function set randomZ(_arg1:Random):void{
if (!_arg1){
_arg1 = new UniformRandom();
};
_randomZ = _arg1;
}
public function set width(_arg1:Number):void{
_width = _arg1;
updateVolume();
}
public function set height(_arg1:Number):void{
_height = _arg1;
updateVolume();
}
override public function toXML():XML{
var _local1:XML = super.toXML();
_local1.@x = x;
_local1.@y = y;
_local1.@z = z;
_local1.@width = width;
_local1.@height = height;
_local1.@depth = depth;
_local1.@randomX = randomX.name;
_local1.@randomY = randomY.name;
_local1.@randomZ = randomZ.name;
return (_local1);
}
public function set depth(_arg1:Number):void{
_depth = _arg1;
updateVolume();
}
override public function contains(_arg1:Number, _arg2:Number, _arg3:Number):Boolean{
if ((((_arg1 < this.x)) || ((_arg1 > (this.x + _width))))){
return (false);
};
if ((((_arg2 < this.y)) || ((_arg2 > (this.y + _height))))){
return (false);
};
if ((((_arg3 < this.z)) || ((_arg3 > (this.z + _depth))))){
return (false);
};
return (true);
}
override public function getXMLTagName():String{
return ("CubeZone");
}
override public function getRelatedObjects():Array{
return ([_randomX, _randomY, _randomZ]);
}
public function get height():Number{
return (_height);
}
public function set randomX(_arg1:Random):void{
if (!_arg1){
_arg1 = new UniformRandom();
};
_randomX = _arg1;
}
override public function parseXML(_arg1:XML, _arg2:XMLBuilder=null):void{
super.parseXML(_arg1, _arg2);
x = parseFloat(_arg1.@x);
y = parseFloat(_arg1.@y);
z = parseFloat(_arg1.@z);
width = parseFloat(_arg1.@width);
height = parseFloat(_arg1.@height);
depth = parseFloat(_arg1.@depth);
randomX = (_arg2.getElementByName(_arg1.@randomX) as Random);
randomY = (_arg2.getElementByName(_arg1.@randomY) as Random);
randomZ = (_arg2.getElementByName(_arg1.@randomZ) as Random);
}
public function get randomX():Random{
return (_randomX);
}
public function set randomY(_arg1:Random):void{
if (!_arg1){
_arg1 = new UniformRandom();
};
_randomY = _arg1;
}
public function get randomY():Random{
return (_randomY);
}
public function get randomZ():Random{
return (_randomZ);
}
}
}//package idv.cjcat.stardust.threeD.zones
Section 155
//DiskZone (idv.cjcat.stardust.threeD.zones.DiskZone)
package idv.cjcat.stardust.threeD.zones {
import idv.cjcat.stardust.common.xml.*;
import idv.cjcat.stardust.threeD.geom.*;
import idv.cjcat.stardust.common.math.*;
public class DiskZone extends Surface {
public var y:Number;
private var _minRadius:Number;
private var _maxRadius:Number;
private var _randomT:Random;
public var x:Number;
public var z:Number;
private var _randomR:Random;
public function DiskZone(_arg1:Number=0, _arg2:Number=0, _arg3:Number=0, _arg4:Number=0, _arg5:Number=100, _arg6:Random=null){
this.x = _arg1;
this.y = _arg2;
this.z = _arg3;
this.minRadius = _arg4;
this.maxRadius = _arg5;
this.randomR = _arg6;
_randomT = new UniformRandom();
}
override protected function updateVolume():void{
var _local1:Number;
if (_minRadius > _maxRadius){
_local1 = _minRadius;
_minRadius = _maxRadius;
_maxRadius = _local1;
};
volume = ((((_maxRadius * _maxRadius) - (_minRadius * minRadius)) * Math.PI) * virtualThickness);
}
public function get minRadius():Number{
return (_minRadius);
}
public function set minRadius(_arg1:Number):void{
_minRadius = _arg1;
updateVolume();
}
public function get maxRadius():Number{
return (_maxRadius);
}
override public function toXML():XML{
var _local1:XML = super.toXML();
_local1.@x = x;
_local1.@y = y;
_local1.@z = z;
_local1.@minRadius = minRadius;
_local1.@maxRadius = maxRadius;
_local1.@randomR = randomR.name;
return (_local1);
}
public function set randomR(_arg1:Random):void{
if (!_arg1){
_arg1 = new UniformRandom();
};
_randomR = _arg1;
}
override public function getRelatedObjects():Array{
return ([_randomR]);
}
override public function getXMLTagName():String{
return ("DiskZone");
}
public function set maxRadius(_arg1:Number):void{
_maxRadius = _arg1;
updateVolume();
}
public function get randomR():Random{
return (_randomR);
}
override public function calculateMotionData3D():MotionData3D{
if (_maxRadius == 0){
return (new MotionData3D(x, y, z));
};
randomR.setRange(_minRadius, _maxRadius);
_randomT.setRange(0, StardustMath.TWO_PI);
var _local1:Number = _randomT.random();
var _local2:Number = (_maxRadius * Math.sqrt((randomR.random() / _maxRadius)));
return (new MotionData3D(((_local2 * Math.cos(_local1)) + x), y, ((_local2 * Math.sin(_local1)) + y)));
}
override public function parseXML(_arg1:XML, _arg2:XMLBuilder=null):void{
super.parseXML(_arg1, _arg2);
x = parseFloat(_arg1.@x);
y = parseFloat(_arg1.@y);
z = parseFloat(_arg1.@z);
minRadius = parseFloat(_arg1.@minRadius);
maxRadius = parseFloat(_arg1.@maxRadius);
randomR = (_arg2.getElementByName(_arg1.@randomR) as Random);
}
}
}//package idv.cjcat.stardust.threeD.zones
Section 156
//SinglePoint3D (idv.cjcat.stardust.threeD.zones.SinglePoint3D)
package idv.cjcat.stardust.threeD.zones {
import idv.cjcat.stardust.common.xml.*;
import idv.cjcat.stardust.threeD.geom.*;
public class SinglePoint3D extends Surface {
public var x:Number;
public var y:Number;
public var z:Number;
public function SinglePoint3D(_arg1:Number=0, _arg2:Number=0, _arg3:Number=0){
this.x = _arg1;
this.y = _arg2;
this.z = _arg3;
}
override protected function updateVolume():void{
volume = (((((4 / 3) * virtualThickness) * virtualThickness) * virtualThickness) * Math.PI);
}
override public function getXMLTagName():String{
return ("SinglePoint3D");
}
override public function parseXML(_arg1:XML, _arg2:XMLBuilder=null):void{
super.parseXML(_arg1, _arg2);
x = parseFloat(_arg1.@x);
y = parseFloat(_arg1.@y);
z = parseFloat(_arg1.@z);
}
override public function calculateMotionData3D():MotionData3D{
return (MotionData3DPool.get(x, y, z));
}
override public function toXML():XML{
var _local1:XML = super.toXML();
_local1.@x = x;
_local1.@y = y;
_local1.@z = z;
return (_local1);
}
override public function contains(_arg1:Number, _arg2:Number, _arg3:Number):Boolean{
if ((((((this.x == _arg1)) && ((this.y == _arg2)))) && ((this.z == _arg3)))){
return (true);
};
return (false);
}
}
}//package idv.cjcat.stardust.threeD.zones
Section 157
//SphereCap (idv.cjcat.stardust.threeD.zones.SphereCap)
package idv.cjcat.stardust.threeD.zones {
import idv.cjcat.stardust.common.xml.*;
import idv.cjcat.stardust.threeD.geom.*;
import idv.cjcat.stardust.common.math.*;
public class SphereCap extends Zone3D {
private var _minRadius:Number;
private var _angle:Number;
private var _maxRadius:Number;
public var x:Number;
public var y:Number;
public var z:Number;
public function SphereCap(_arg1:Number=0, _arg2:Number=0, _arg3:Number=0, _arg4:Number=50, _arg5:Number=100, _arg6:Number=30){
this.x = _arg1;
this.y = _arg2;
this.z = _arg3;
this.minRadius = _arg4;
this.maxRadius = _arg5;
this.angle = _arg6;
}
override public function contains(_arg1:Number, _arg2:Number, _arg3:Number):Boolean{
var _local4:Number = (this.x - _arg1);
var _local5:Number = (this.y - _arg2);
var _local6:Number = (this.z - _arg3);
var _local7:Number = (((_local4 * _local4) + (_local5 * _local5)) + (_local6 * _local6));
return ((((_local7 <= (_maxRadius * _maxRadius))) && ((_local7 >= (_minRadius * _minRadius)))));
}
override protected function updateVolume():void{
volume = (((StardustMath.TWO_PI / 3) * (((_maxRadius * _maxRadius) * _maxRadius) - ((_minRadius * _minRadius) * _minRadius))) * (1 - Math.cos((angle * StardustMath.DEGREE_TO_RADIAN))));
}
public function get minRadius():Number{
return (_minRadius);
}
public function set minRadius(_arg1:Number):void{
_minRadius = _arg1;
updateVolume();
}
public function get angle():Number{
return (_angle);
}
public function get maxRadius():Number{
return (_maxRadius);
}
override public function toXML():XML{
var _local1:XML = super.toXML();
_local1.@x = x;
_local1.@y = y;
_local1.@z = z;
_local1.@minRadius = minRadius;
_local1.@maxRadius = maxRadius;
_local1.@angle = angle;
return (_local1);
}
override public function getRelatedObjects():Array{
return ([]);
}
override public function getXMLTagName():String{
return ("SphereCap");
}
public function set angle(_arg1:Number):void{
if (_arg1 <= 0){
_arg1 = 0;
};
_angle = _arg1;
updateVolume();
}
override public function parseXML(_arg1:XML, _arg2:XMLBuilder=null):void{
super.parseXML(_arg1, _arg2);
x = parseFloat(_arg1.@x);
y = parseFloat(_arg1.@y);
z = parseFloat(_arg1.@z);
minRadius = parseFloat(_arg1.@minRadius);
maxRadius = parseFloat(_arg1.@maxRadius);
angle = parseFloat(_arg1.@angle);
}
public function set maxRadius(_arg1:Number):void{
_maxRadius = _arg1;
updateVolume();
}
override public function calculateMotionData3D():MotionData3D{
var _local1:Number = (StardustMath.TWO_PI * Math.random());
var _local2:Number = Math.random();
var _local3:Vec3D = Vec3DPool.get((_local2 * Math.cos(_local1)), (-1 / Math.tan((angle * StardustMath.DEGREE_TO_RADIAN))), (_local2 * Math.sin(_local1)));
_local3.length = StardustMath.interpolate(0, _minRadius, 1, _maxRadius, Math.random());
Vec3DPool.recycle(_local3);
return (MotionData3DPool.get(_local3.x, _local3.y, _local3.z));
}
}
}//package idv.cjcat.stardust.threeD.zones
Section 158
//SphereShell (idv.cjcat.stardust.threeD.zones.SphereShell)
package idv.cjcat.stardust.threeD.zones {
import idv.cjcat.stardust.common.xml.*;
import idv.cjcat.stardust.threeD.geom.*;
import idv.cjcat.stardust.common.math.*;
public class SphereShell extends Zone3D {
private var _minRadius:Number;
private var _maxRadius:Number;
public var x:Number;
public var y:Number;
public var z:Number;
public function SphereShell(_arg1:Number=0, _arg2:Number=0, _arg3:Number=0, _arg4:Number=50, _arg5:Number=100){
this.x = _arg1;
this.y = _arg2;
this.z = _arg3;
this.minRadius = _arg4;
this.maxRadius = _arg5;
}
override protected function updateVolume():void{
volume = (((4 / 3) * Math.PI) * (((_maxRadius * _maxRadius) * _maxRadius) - ((_minRadius * _minRadius) * _minRadius)));
}
public function get minRadius():Number{
return (_minRadius);
}
override public function getRelatedObjects():Array{
return ([]);
}
public function set minRadius(_arg1:Number):void{
_minRadius = _arg1;
updateVolume();
}
override public function getXMLTagName():String{
return ("SphereShell");
}
public function set maxRadius(_arg1:Number):void{
_maxRadius = _arg1;
updateVolume();
}
override public function parseXML(_arg1:XML, _arg2:XMLBuilder=null):void{
super.parseXML(_arg1, _arg2);
x = parseFloat(_arg1.@x);
y = parseFloat(_arg1.@y);
z = parseFloat(_arg1.@z);
minRadius = parseFloat(_arg1.@minRadius);
maxRadius = parseFloat(_arg1.@maxRadius);
}
public function get maxRadius():Number{
return (_maxRadius);
}
override public function toXML():XML{
var _local1:XML = super.toXML();
_local1.@x = x;
_local1.@y = y;
_local1.@z = z;
_local1.@minRadius = minRadius;
_local1.@maxRadius = maxRadius;
return (_local1);
}
override public function calculateMotionData3D():MotionData3D{
var _local1:Vec3D = Vec3DPool.get((Math.random() - 0.5), (Math.random() - 0.5), (Math.random() - 0.5));
_local1.length = StardustMath.interpolate(0, _minRadius, 1, _maxRadius, Math.random());
Vec3DPool.recycle(_local1);
return (MotionData3DPool.get(_local1.x, _local1.y, _local1.z));
}
override public function contains(_arg1:Number, _arg2:Number, _arg3:Number):Boolean{
var _local4:Number = (this.x - _arg1);
var _local5:Number = (this.y - _arg2);
var _local6:Number = (this.z - _arg3);
var _local7:Number = (((_local4 * _local4) + (_local5 * _local5)) + (_local6 * _local6));
return ((((_local7 <= (_maxRadius * _maxRadius))) && ((_local7 >= (_minRadius * _minRadius)))));
}
}
}//package idv.cjcat.stardust.threeD.zones
Section 159
//SphereSurface (idv.cjcat.stardust.threeD.zones.SphereSurface)
package idv.cjcat.stardust.threeD.zones {
import idv.cjcat.stardust.common.xml.*;
import idv.cjcat.stardust.threeD.geom.*;
public class SphereSurface extends Surface {
private var _radius:Number;
public var x:Number;
public var y:Number;
public var z:Number;
public function SphereSurface(_arg1:Number=0, _arg2:Number=0, _arg3:Number=0, _arg4:Number=100){
this.x = _arg1;
this.y = _arg2;
this.z = _arg3;
this.radius = _arg4;
}
public function get radius():Number{
return (_radius);
}
override protected function updateVolume():void{
volume = ((((4 * Math.PI) * _radius) * _radius) * virtualThickness);
}
public function set radius(_arg1:Number):void{
_radius = _arg1;
updateVolume();
}
override public function getRelatedObjects():Array{
return ([]);
}
override public function getXMLTagName():String{
return ("SphereSurface");
}
override public function calculateMotionData3D():MotionData3D{
var _local1:Vec3D = Vec3DPool.get((Math.random() - 0.5), (Math.random() - 0.5), (Math.random() - 0.5));
_local1.length = _radius;
Vec3DPool.recycle(_local1);
return (MotionData3DPool.get(_local1.x, _local1.y, _local1.z));
}
override public function toXML():XML{
var _local1:XML = super.toXML();
_local1.@x = x;
_local1.@y = y;
_local1.@z = z;
_local1.@radius = radius;
return (_local1);
}
override public function parseXML(_arg1:XML, _arg2:XMLBuilder=null):void{
super.parseXML(_arg1, _arg2);
x = parseFloat(_arg1.@x);
y = parseFloat(_arg1.@y);
z = parseFloat(_arg1.@z);
radius = parseFloat(_arg1.@radius);
}
override public function contains(_arg1:Number, _arg2:Number, _arg3:Number):Boolean{
var _local4:Number = (this.x - _arg1);
var _local5:Number = (this.y - _arg2);
var _local6:Number = (this.z - _arg3);
return (((((_local4 * _local4) + (_local5 * _local5)) + (_local6 * _local6)) == (_radius * _radius)));
}
}
}//package idv.cjcat.stardust.threeD.zones
Section 160
//SphereZone (idv.cjcat.stardust.threeD.zones.SphereZone)
package idv.cjcat.stardust.threeD.zones {
import idv.cjcat.stardust.common.xml.*;
import idv.cjcat.stardust.threeD.geom.*;
public class SphereZone extends Zone3D {
private var _radius:Number;
public var x:Number;
public var y:Number;
public var z:Number;
public function SphereZone(_arg1:Number=0, _arg2:Number=0, _arg3:Number=0, _arg4:Number=100){
this.x = _arg1;
this.y = _arg2;
this.z = _arg3;
this.radius = _arg4;
}
public function get radius():Number{
return (_radius);
}
override protected function updateVolume():void{
volume = (((((4 / 3) * Math.PI) * _radius) * _radius) * _radius);
}
public function set radius(_arg1:Number):void{
_radius = _arg1;
updateVolume();
}
override public function getRelatedObjects():Array{
return ([]);
}
override public function getXMLTagName():String{
return ("SphereZone");
}
override public function calculateMotionData3D():MotionData3D{
var _local1:Vec3D = Vec3DPool.get((0.5 - Math.random()), (0.5 - Math.random()), (0.5 - Math.random()));
_local1.length = (_radius * Math.random());
Vec3DPool.recycle(_local1);
return (MotionData3DPool.get(_local1.x, _local1.y, _local1.z));
}
override public function toXML():XML{
var _local1:XML = super.toXML();
_local1.@x = x;
_local1.@y = y;
_local1.@z = z;
_local1.@radius = radius;
return (_local1);
}
override public function parseXML(_arg1:XML, _arg2:XMLBuilder=null):void{
super.parseXML(_arg1, _arg2);
x = parseFloat(_arg1.@x);
y = parseFloat(_arg1.@y);
z = parseFloat(_arg1.@z);
radius = parseFloat(_arg1.@radius);
}
override public function contains(_arg1:Number, _arg2:Number, _arg3:Number):Boolean{
var _local4:Number = (this.x - _arg1);
var _local5:Number = (this.y - _arg2);
var _local6:Number = (this.z - _arg3);
return (((((_local4 * _local4) + (_local5 * _local5)) + (_local6 * _local6)) <= (_radius * _radius)));
}
}
}//package idv.cjcat.stardust.threeD.zones
Section 161
//Surface (idv.cjcat.stardust.threeD.zones.Surface)
package idv.cjcat.stardust.threeD.zones {
import idv.cjcat.stardust.common.xml.*;
public class Surface extends Zone3D {
private var _virtualThickness:Number;
public function Surface(){
_virtualThickness = 1;
}
final public function set virtualThickness(_arg1:Number):void{
_virtualThickness = _arg1;
updateVolume();
}
override public function getXMLTagName():String{
return ("Surface");
}
override public function parseXML(_arg1:XML, _arg2:XMLBuilder=null):void{
super.parseXML(_arg1, _arg2);
virtualThickness = parseFloat(_arg1.@virtualThickness);
}
final public function get virtualThickness():Number{
return (_virtualThickness);
}
override public function toXML():XML{
var _local1:XML = super.toXML();
_local1.@virtualThickness = virtualThickness;
return (_local1);
}
}
}//package idv.cjcat.stardust.threeD.zones
Section 162
//Zone3D (idv.cjcat.stardust.threeD.zones.Zone3D)
package idv.cjcat.stardust.threeD.zones {
import idv.cjcat.stardust.common.xml.*;
import idv.cjcat.stardust.common.*;
import idv.cjcat.stardust.threeD.geom.*;
public class Zone3D extends StardustElement {
public var rotationY:Number;
public var rotationX:Number;
protected var volume:Number;
public var rotationZ:Number;
public function Zone3D(){
rotationX = 0;
rotationY = 0;
rotationZ = 0;
}
final public function getPoint():MotionData3D{
var _local2:Vec3D;
var _local1:MotionData3D = calculateMotionData3D();
if (rotationZ != 0){
_local2 = Vec3DPool.get(_local1.x, _local1.y, _local1.z);
_local2.rotateZThis(rotationZ);
_local1.x = _local2.x;
_local1.y = _local2.y;
_local1.z = _local2.z;
Vec3DPool.recycle(_local2);
};
if (rotationY != 0){
_local2 = Vec3DPool.get(_local1.x, _local1.y, _local1.z);
_local2.rotateYThis(rotationY);
_local1.x = _local2.x;
_local1.y = _local2.y;
_local1.z = _local2.z;
Vec3DPool.recycle(_local2);
};
if (rotationX != 0){
_local2 = Vec3DPool.get(_local1.x, _local1.y, _local1.z);
_local2.rotateXThis(rotationX);
_local1.x = _local2.x;
_local1.y = _local2.y;
_local1.z = _local2.z;
Vec3DPool.recycle(_local2);
};
return (_local1);
}
protected function updateVolume():void{
}
override public function getXMLTagName():String{
return ("Zone3D");
}
override public function parseXML(_arg1:XML, _arg2:XMLBuilder=null):void{
super.parseXML(_arg1, _arg2);
rotationX = parseFloat(_arg1.@rotationX);
rotationY = parseFloat(_arg1.@rotationY);
rotationZ = parseFloat(_arg1.@rotationZ);
}
override public function getElementTypeXMLTag():XML{
return (<zones/>
);
}
override public function toXML():XML{
var _local1:XML = super.toXML();
_local1.@rotationX = rotationX;
_local1.@rotationY = rotationY;
_local1.@rotationZ = rotationZ;
return (_local1);
}
final public function getVolume():Number{
return (volume);
}
public function calculateMotionData3D():MotionData3D{
return (null);
}
public function contains(_arg1:Number, _arg2:Number, _arg3:Number):Boolean{
return (false);
}
}
}//package idv.cjcat.stardust.threeD.zones
Section 163
//ThreeDClassPackage (idv.cjcat.stardust.threeD.ThreeDClassPackage)
package idv.cjcat.stardust.threeD {
import idv.cjcat.stardust.common.xml.*;
import idv.cjcat.stardust.threeD.initializers.*;
import idv.cjcat.stardust.threeD.actions.*;
import idv.cjcat.stardust.threeD.zones.*;
import idv.cjcat.stardust.threeD.fields.*;
import idv.cjcat.stardust.threeD.deflectors.*;
import idv.cjcat.stardust.threeD.emitters.*;
import idv.cjcat.stardust.threeD.renderers.*;
import idv.cjcat.stardust.threeD.actions.triggers.*;
public class ThreeDClassPackage extends ClassPackage {
private static var _instance:ThreeDClassPackage;
final override protected function populateClasses():void{
classes.push(RandomDrift3D);
classes.push(Accelerate3D);
classes.push(BillboardOriented);
classes.push(CalculateScreenVelocity);
classes.push(Collide3D);
classes.push(DeathZone3D);
classes.push(Damping3D);
classes.push(Deflect3D);
classes.push(Explode3D);
classes.push(Gravity3D);
classes.push(Move3D);
classes.push(MutualGravity3D);
classes.push(NormalDrift3D);
classes.push(Oriented3D);
classes.push(Spawn3D);
classes.push(SpeedLimit3D);
classes.push(Spin3D);
classes.push(VelocityField3D);
classes.push(ZoneTrigger3D);
classes.push(BoundingCube);
classes.push(BoundingSphere);
classes.push(PlaneDeflector);
classes.push(SphereDeflector);
classes.push(WrappingCube);
classes.push(Emitter3D);
classes.push(RadialField3D);
classes.push(UniformField3D);
classes.push(DisplayObjectClass3D);
classes.push(Omega3D);
classes.push(Position3D);
classes.push(Rotation3D);
classes.push(Velocity3D);
classes.push(DisplayObjectRenderer3D);
classes.push(CubeZone);
classes.push(DiskZone);
classes.push(SinglePoint3D);
classes.push(SphereCap);
classes.push(SphereShell);
classes.push(SphereSurface);
classes.push(SphereZone);
}
public static function getInstance():ThreeDClassPackage{
if (!_instance){
_instance = new (ThreeDClassPackage);
};
return (_instance);
}
}
}//package idv.cjcat.stardust.threeD
Section 164
//ActionTrigger2D (idv.cjcat.stardust.twoD.actions.triggers.ActionTrigger2D)
package idv.cjcat.stardust.twoD.actions.triggers {
import idv.cjcat.stardust.twoD.actions.*;
import idv.cjcat.stardust.common.actions.triggers.*;
public class ActionTrigger2D extends ActionTrigger {
public function ActionTrigger2D(){
_supports3D = false;
priority = Action2DPriority.getInstance().getPriority((Object(this).constructor as Class));
}
override public function getXMLTagName():String{
return ("ActionTrigger2D");
}
}
}//package idv.cjcat.stardust.twoD.actions.triggers
Section 165
//ZoneTrigger (idv.cjcat.stardust.twoD.actions.triggers.ZoneTrigger)
package idv.cjcat.stardust.twoD.actions.triggers {
import idv.cjcat.stardust.common.xml.*;
import idv.cjcat.stardust.common.particles.*;
import idv.cjcat.stardust.twoD.particles.*;
import idv.cjcat.stardust.common.emitters.*;
import idv.cjcat.stardust.twoD.zones.*;
public class ZoneTrigger extends ActionTrigger2D {
private var _zone:Zone;
public function ZoneTrigger(_arg1:Zone=null){
this.zone = _arg1;
}
override public function parseXML(_arg1:XML, _arg2:XMLBuilder=null):void{
super.parseXML(_arg1, _arg2);
zone = (_arg2.getElementByName(_arg1.@zone) as Zone);
}
override public function getXMLTagName():String{
return ("ZoneTrigger");
}
override public function testTrigger(_arg1:Emitter, _arg2:Particle, _arg3:Number):Boolean{
var _local4:Particle2D = (_arg2 as Particle2D);
return (_zone.contains(_local4.x, _local4.y));
}
public function set zone(_arg1:Zone):void{
if (!_arg1){
_arg1 = new SinglePoint(0, 0);
};
_zone = _arg1;
}
public function get zone():Zone{
return (_zone);
}
override public function toXML():XML{
var _local1:XML = super.toXML();
_local1.@zone = _zone.name;
return (_local1);
}
override public function getRelatedObjects():Array{
return ([_zone]);
}
}
}//package idv.cjcat.stardust.twoD.actions.triggers
Section 166
//Accelerate (idv.cjcat.stardust.twoD.actions.Accelerate)
package idv.cjcat.stardust.twoD.actions {
import idv.cjcat.stardust.common.xml.*;
import idv.cjcat.stardust.common.particles.*;
import idv.cjcat.stardust.twoD.geom.*;
import idv.cjcat.stardust.twoD.particles.*;
import idv.cjcat.stardust.common.emitters.*;
public class Accelerate extends Action2D {
public var acceleration:Number;
public function Accelerate(_arg1:Number=0.1){
this.acceleration = _arg1;
}
override public function getXMLTagName():String{
return ("Accelerate");
}
override public function parseXML(_arg1:XML, _arg2:XMLBuilder=null):void{
super.parseXML(_arg1, _arg2);
acceleration = parseFloat(_arg1.@acceleration);
}
override public function update(_arg1:Emitter, _arg2:Particle, _arg3:Number):void{
var _local5:Vec2D;
var _local4:Particle2D = (_arg2 as Particle2D);
_local5 = Vec2DPool.get(_local4.vx, _local4.vy);
if (_local5.length > 0){
_local5.length = (_local5.length + (acceleration * _arg3));
_local4.vx = _local5.x;
_local4.vy = _local5.y;
};
Vec2DPool.recycle(_local5);
}
override public function toXML():XML{
var _local1:XML = super.toXML();
_local1.@acceleration = acceleration;
return (_local1);
}
}
}//package idv.cjcat.stardust.twoD.actions
Section 167
//Action2D (idv.cjcat.stardust.twoD.actions.Action2D)
package idv.cjcat.stardust.twoD.actions {
import idv.cjcat.stardust.common.actions.*;
public class Action2D extends Action {
public function Action2D(){
_supports3D = false;
priority = Action2DPriority.getInstance().getPriority((Object(this).constructor as Class));
}
override public function getXMLTagName():String{
return ("Action2D");
}
}
}//package idv.cjcat.stardust.twoD.actions
Section 168
//Action2DPriority (idv.cjcat.stardust.twoD.actions.Action2DPriority)
package idv.cjcat.stardust.twoD.actions {
import idv.cjcat.stardust.common.actions.*;
import idv.cjcat.stardust.twoD.actions.triggers.*;
public class Action2DPriority extends ActionPriority {
private static var _instance:Action2DPriority;
final override protected function populatePriorities():void{
priorities[Damping] = -1;
priorities[DeathZone] = -1;
priorities[Gravity] = -2;
priorities[MutualGravity] = -2;
priorities[VelocityField] = -3;
priorities[Move] = -4;
priorities[Spin] = -4;
priorities[Deflect] = -5;
priorities[Collide] = -6;
priorities[DeathZone] = -6;
priorities[Oriented] = -6;
priorities[ZoneTrigger] = -6;
}
public static function getInstance():Action2DPriority{
if (!_instance){
_instance = new (Action2DPriority);
};
return (_instance);
}
}
}//package idv.cjcat.stardust.twoD.actions
Section 169
//Collide (idv.cjcat.stardust.twoD.actions.Collide)
package idv.cjcat.stardust.twoD.actions {
import idv.cjcat.stardust.common.particles.*;
import idv.cjcat.stardust.twoD.geom.*;
import idv.cjcat.stardust.twoD.particles.*;
import idv.cjcat.stardust.common.emitters.*;
import idv.cjcat.stardust.*;
public class Collide extends MutualAction {
public function Collide(){
maxDistance = 0;
}
override public function preUpdate(_arg1:Emitter, _arg2:Number):void{
var _local6:Particle;
var _local3:Array = _arg1.sd::particles;
if (_local3.length <= 1){
return;
};
var _local4:Number = 0;
var _local5:Number = 0;
for each (_local6 in _local3) {
if (_local6.collisionRadius > _local4){
_local5 = _local4;
_local4 = (_local6.collisionRadius * _local6.scale);
} else {
if (_local6.collisionRadius > _local5){
_local5 = (_local6.collisionRadius * _local6.scale);
};
};
};
maxDistance = (_local4 + _local5);
}
override protected function doMutualAction(_arg1:Particle2D, _arg2:Particle2D, _arg3:Number):void{
var _local4:Number;
var _local5:Number;
var _local6:Number;
var _local7:Number;
var _local8:Number;
var _local9:Vec2D;
var _local10:Number;
var _local11:Number;
var _local12:Number;
var _local13:Number;
var _local14:Number;
var _local15:Number;
var _local16:Vec2D;
var _local17:Vec2D;
var _local18:Vec2D;
var _local19:Vec2D;
var _local20:Vec2D;
var _local21:Number;
if ((_arg1.mask & _arg2.mask)){
_local4 = (_arg1.x - _arg2.x);
_local5 = (_arg1.y - _arg2.y);
_local6 = (_arg1.collisionRadius * _arg1.scale);
_local7 = (_arg2.collisionRadius * _arg2.scale);
_local8 = (_local6 + _local7);
if (((_local4 * _local4) + (_local5 * _local5)) > (_local8 * _local8)){
return;
};
_local9 = Vec2DPool.get(_local4, _local5);
_local10 = (1 / _local8);
_local11 = (((_arg1.x * _local7) + (_arg2.x * _local6)) * _local10);
_local12 = (((_arg1.y * _local7) + (_arg2.y * _local6)) * _local10);
_local9.length = _local6;
_arg1.x = (_local11 + _local9.x);
_arg1.y = (_local12 + _local9.y);
_local9.length = _local7;
_arg2.x = (_local11 - _local9.x);
_arg2.y = (_local12 - _local9.y);
_local13 = (_arg1.mass * _arg1.scale);
_local14 = (_arg2.mass * _arg2.scale);
_local15 = (1 / (_local13 + _local14));
_local16 = Vec2DPool.get(_arg1.vx, _arg1.vy);
_local17 = Vec2DPool.get(_arg2.vx, _arg2.vy);
_local16.projectThis(_local9);
_local17.projectThis(_local9);
_local18 = Vec2DPool.get((_arg1.vx - _local16.x), (_arg1.vy - _local16.y));
_local19 = Vec2DPool.get((_arg2.vx - _local17.x), (_arg2.vy - _local17.y));
_local20 = Vec2DPool.get((_local16.x - _local17.x), (_local16.y - _local17.y));
_local21 = (_local13 - _local14);
_local16.x = (((_local21 * _local16.x) + ((2 * _local14) * _local17.x)) * _local15);
_local16.y = (((_local21 * _local16.y) + ((2 * _local14) * _local17.y)) * _local15);
_local17.x = (_local20.x + _local16.x);
_local17.y = (_local20.y + _local16.y);
_arg1.vx = (_local16.x + _local18.x);
_arg1.vy = (_local16.y + _local18.y);
_arg2.vx = (_local17.x + _local19.x);
_arg2.vy = (_local17.y + _local19.y);
Vec2DPool.recycle(_local9);
Vec2DPool.recycle(_local16);
Vec2DPool.recycle(_local17);
Vec2DPool.recycle(_local18);
Vec2DPool.recycle(_local19);
Vec2DPool.recycle(_local20);
};
}
override public function getXMLTagName():String{
return ("Collide");
}
}
}//package idv.cjcat.stardust.twoD.actions
Section 170
//Damping (idv.cjcat.stardust.twoD.actions.Damping)
package idv.cjcat.stardust.twoD.actions {
import idv.cjcat.stardust.common.xml.*;
import idv.cjcat.stardust.common.particles.*;
import idv.cjcat.stardust.twoD.particles.*;
import idv.cjcat.stardust.common.emitters.*;
public class Damping extends Action2D {
public var damping:Number;
public function Damping(_arg1:Number=0){
this.damping = _arg1;
}
override public function parseXML(_arg1:XML, _arg2:XMLBuilder=null):void{
super.parseXML(_arg1, _arg2);
damping = parseFloat(_arg1.@damping);
}
override public function update(_arg1:Emitter, _arg2:Particle, _arg3:Number):void{
var _local4:Particle2D = (_arg2 as Particle2D);
var _local5:Number = 1;
var _local6:Number = 1;
if (damping != 0){
_local6 = Math.pow((1 - damping), _arg3);
};
_local4.vx = (_local4.vx * _local6);
_local4.vy = (_local4.vy * _local6);
}
override public function getXMLTagName():String{
return ("Damping");
}
override public function toXML():XML{
var _local1:XML = super.toXML();
_local1.@damping = damping;
return (_local1);
}
}
}//package idv.cjcat.stardust.twoD.actions
Section 171
//DeathZone (idv.cjcat.stardust.twoD.actions.DeathZone)
package idv.cjcat.stardust.twoD.actions {
import idv.cjcat.stardust.common.xml.*;
import idv.cjcat.stardust.common.particles.*;
import idv.cjcat.stardust.twoD.particles.*;
import idv.cjcat.stardust.common.emitters.*;
import idv.cjcat.stardust.twoD.zones.*;
public class DeathZone extends Action2D {
public var inverted:Boolean;
public var zone:Zone;
public function DeathZone(_arg1:Zone=null, _arg2:Boolean=false){
this.zone = _arg1;
this.inverted = _arg2;
}
override public function getXMLTagName():String{
return ("DeathZone");
}
override public function parseXML(_arg1:XML, _arg2:XMLBuilder=null):void{
super.parseXML(_arg1, _arg2);
if (_arg1.@zone == "null"){
zone = null;
} else {
zone = (_arg2.getElementByName(_arg1.@zone) as Zone);
};
inverted = (_arg1.@inverted == "true");
}
override public function update(_arg1:Emitter, _arg2:Particle, _arg3:Number):void{
if (!zone){
return;
};
var _local4:Particle2D = (_arg2 as Particle2D);
var _local5 = !(zone.contains(_local4.x, _local4.y));
if (inverted){
_local5 = !(_local5);
};
if (!_local5){
_arg2.isDead = true;
};
}
override public function toXML():XML{
var _local1:XML = super.toXML();
if (!zone){
_local1.@zone = "null";
} else {
_local1.@zone = zone.name;
};
_local1.@inverted = inverted;
return (_local1);
}
override public function getRelatedObjects():Array{
if (!zone){
return ([]);
};
return ([zone]);
}
}
}//package idv.cjcat.stardust.twoD.actions
Section 172
//Deflect (idv.cjcat.stardust.twoD.actions.Deflect)
package idv.cjcat.stardust.twoD.actions {
import idv.cjcat.stardust.common.xml.*;
import idv.cjcat.stardust.common.particles.*;
import idv.cjcat.stardust.twoD.geom.*;
import idv.cjcat.stardust.twoD.particles.*;
import idv.cjcat.stardust.common.emitters.*;
import idv.cjcat.stardust.twoD.deflectors.*;
import idv.cjcat.stardust.*;
public class Deflect extends Action2D {
sd var deflectors:Array;
public function Deflect(){
deflectors = [];
}
override public function toXML():XML{
var _local2:Deflector;
var _local1:XML = super.toXML();
if (deflectors.length > 0){
_local1.appendChild(<deflectors/>
);
for each (_local2 in deflectors) {
_local1.deflectors.appendChild(_local2.getXMLTag());
};
};
return (_local1);
}
override public function getXMLTagName():String{
return ("Deflect");
}
override public function update(_arg1:Emitter, _arg2:Particle, _arg3:Number):void{
var _local5:Deflector;
var _local6:MotionData4D;
var _local4:Particle2D = (_arg2 as Particle2D);
for each (_local5 in deflectors) {
_local6 = _local5.getMotionData4D(_local4);
_local4.x = _local6.x;
_local4.y = _local6.y;
_local4.vx = _local6.vx;
_local4.vy = _local6.vy;
MotionData4DPool.recycle(_local6);
};
}
override public function parseXML(_arg1:XML, _arg2:XMLBuilder=null):void{
var _local3:XML;
super.parseXML(_arg1, _arg2);
clearDeflectors();
for each (_local3 in _arg1.deflectors.*) {
addDeflector((_arg2.getElementByName(_local3.@name) as Deflector));
};
}
public function removeDeflector(_arg1:Deflector):void{
var _local2:int = deflectors.indexOf(_arg1);
if (_local2 >= 0){
deflectors.splice(_local2, 1);
};
}
public function addDeflector(_arg1:Deflector):void{
if (deflectors.indexOf(_arg1) < 0){
deflectors.push(_arg1);
};
}
public function clearDeflectors():void{
deflectors = [];
}
override public function getRelatedObjects():Array{
return (deflectors);
}
}
}//package idv.cjcat.stardust.twoD.actions
Section 173
//Explode (idv.cjcat.stardust.twoD.actions.Explode)
package idv.cjcat.stardust.twoD.actions {
import flash.events.*;
import idv.cjcat.stardust.common.xml.*;
import idv.cjcat.stardust.common.particles.*;
import idv.cjcat.stardust.twoD.geom.*;
import idv.cjcat.stardust.twoD.particles.*;
import idv.cjcat.stardust.common.emitters.*;
public class Explode extends Action2D {
public var maxDistance:Number;
public var strength:Number;
private var _discharged:Boolean;
private var _currentOuterRadius:Number;
public var epsilon:Number;
private var _currentInnerRadius:Number;
public var growSpeed:Number;
public var x:Number;
public var y:Number;
public var attenuationPower:Number;
public function Explode(_arg1:Number=0, _arg2:Number=0, _arg3:Number=5, _arg4:Number=40, _arg5:Number=200, _arg6:Number=0.1, _arg7:Number=1){
this.x = _arg1;
this.y = _arg2;
this.strength = _arg3;
this.growSpeed = _arg4;
this.maxDistance = _arg5;
this.attenuationPower = _arg6;
this.epsilon = _arg7;
_discharged = true;
}
override public function update(_arg1:Emitter, _arg2:Particle, _arg3:Number):void{
if (_discharged){
return;
};
var _local4:Particle2D = (_arg2 as Particle2D);
var _local5:Vec2D = Vec2DPool.get((_local4.x - x), (_local4.y - y));
var _local6:Number = _local5.length;
if (_local6 < epsilon){
_local6 = epsilon;
};
if ((((_local6 >= _currentInnerRadius)) && ((_local6 < _currentOuterRadius)))){
_local5.length = (strength * Math.pow(_local6, -(attenuationPower)));
_local4.vx = (_local4.vx + (_local5.x * _arg3));
_local4.vy = (_local4.vy + (_local5.y * _arg3));
};
Vec2DPool.recycle(_local5);
}
override public function postUpdate(_arg1:Emitter, _arg2:Number):void{
if (_discharged){
return;
};
_currentInnerRadius = (_currentInnerRadius + growSpeed);
_currentOuterRadius = (_currentOuterRadius + growSpeed);
if (_currentInnerRadius > maxDistance){
_discharged = true;
};
}
public function explode(_arg1:Event=null):void{
_discharged = false;
_currentInnerRadius = 0;
_currentOuterRadius = growSpeed;
}
override public function toXML():XML{
var _local1:XML = super.toXML();
_local1.@x = x;
_local1.@y = y;
_local1.@strength = strength;
_local1.@growSpeed = growSpeed;
_local1.@maxDistance = maxDistance;
_local1.@attenuationPower = attenuationPower;
_local1.@epsilon = epsilon;
return (_local1);
}
override public function getXMLTagName():String{
return ("Explode");
}
override public function parseXML(_arg1:XML, _arg2:XMLBuilder=null):void{
super.parseXML(_arg1, _arg2);
x = parseFloat(_arg1.@x);
y = parseFloat(_arg1.@y);
strength = parseFloat(_arg1.@strength);
growSpeed = parseFloat(_arg1.@growSpeed);
maxDistance = parseFloat(_arg1.@maxDistance);
attenuationPower = parseFloat(_arg1.@attenuationPower);
epsilon = parseFloat(_arg1.@epsilon);
}
}
}//package idv.cjcat.stardust.twoD.actions
Section 174
//Gravity (idv.cjcat.stardust.twoD.actions.Gravity)
package idv.cjcat.stardust.twoD.actions {
import idv.cjcat.stardust.common.xml.*;
import idv.cjcat.stardust.common.particles.*;
import idv.cjcat.stardust.twoD.geom.*;
import idv.cjcat.stardust.twoD.particles.*;
import idv.cjcat.stardust.common.emitters.*;
import idv.cjcat.stardust.twoD.fields.*;
import idv.cjcat.stardust.*;
public class Gravity extends Action2D {
sd var fields:Array;
public function Gravity(){
fields = [];
}
public function addField(_arg1:Field):void{
if (fields.indexOf(_arg1) < 0){
fields.push(_arg1);
};
}
override public function toXML():XML{
var _local2:Field;
var _local1:XML = super.toXML();
if (fields.length > 0){
_local1.appendChild(<fields/>
);
for each (_local2 in fields) {
_local1.fields.appendChild(_local2.getXMLTag());
};
};
return (_local1);
}
override public function parseXML(_arg1:XML, _arg2:XMLBuilder=null):void{
var _local3:XML;
super.parseXML(_arg1, _arg2);
clearFields();
for each (_local3 in _arg1.fields.*) {
addField((_arg2.getElementByName(_local3.@name) as Field));
};
}
public function clearFields():void{
fields = [];
}
override public function update(_arg1:Emitter, _arg2:Particle, _arg3:Number):void{
var _local5:Field;
var _local6:MotionData2D;
var _local4:Particle2D = (_arg2 as Particle2D);
for each (_local5 in fields) {
_local6 = _local5.getMotionData2D(_local4);
_local4.vx = (_local4.vx + (_local6.x * _arg3));
_local4.vy = (_local4.vy + (_local6.y * _arg3));
MotionData2DPool.recycle(_local6);
};
}
override public function getXMLTagName():String{
return ("Gravity");
}
public function removeField(_arg1:Field):void{
var _local2:int = fields.indexOf(_arg1);
if (_local2 >= 0){
fields.splice(_local2, 1);
};
}
override public function getRelatedObjects():Array{
return (fields);
}
}
}//package idv.cjcat.stardust.twoD.actions
Section 175
//Impulse (idv.cjcat.stardust.twoD.actions.Impulse)
package idv.cjcat.stardust.twoD.actions {
import flash.events.*;
import idv.cjcat.stardust.common.xml.*;
import idv.cjcat.stardust.common.particles.*;
import idv.cjcat.stardust.twoD.geom.*;
import idv.cjcat.stardust.twoD.particles.*;
import idv.cjcat.stardust.common.emitters.*;
import idv.cjcat.stardust.twoD.fields.*;
public class Impulse extends Action2D {
private var _discharged:Boolean;
private var _field:Field;
public function Impulse(_arg1:Field=null){
this.field = _arg1;
_discharged = true;
}
override public function getXMLTagName():String{
return ("Impulse");
}
override public function postUpdate(_arg1:Emitter, _arg2:Number):void{
_discharged = true;
}
override public function parseXML(_arg1:XML, _arg2:XMLBuilder=null):void{
super.parseXML(_arg1, _arg2);
field = (_arg2.getElementByName(_arg1.@field) as Field);
}
override public function update(_arg1:Emitter, _arg2:Particle, _arg3:Number):void{
if (_discharged){
return;
};
var _local4:Particle2D = (_arg2 as Particle2D);
var _local5:MotionData2D = field.getMotionData2D(_local4);
_local4.vx = (_local4.vx + (_local5.x * _arg3));
_local4.vy = (_local4.vy + (_local5.y * _arg3));
MotionData2DPool.recycle(_local5);
}
public function set field(_arg1:Field):void{
if (!_arg1){
_arg1 = new UniformField(0, 0);
};
_field = _arg1;
}
public function impulse(_arg1:Event=null):void{
_discharged = false;
}
public function get field():Field{
return (_field);
}
override public function toXML():XML{
var _local1:XML = super.toXML();
_local1.@field = field.name;
return (_local1);
}
override public function getRelatedObjects():Array{
return ([_field]);
}
}
}//package idv.cjcat.stardust.twoD.actions
Section 176
//LazyAction (idv.cjcat.stardust.twoD.actions.LazyAction)
package idv.cjcat.stardust.twoD.actions {
import idv.cjcat.stardust.common.actions.*;
import idv.cjcat.stardust.common.xml.*;
import idv.cjcat.stardust.twoD.deflectors.*;
import idv.cjcat.stardust.twoD.fields.*;
import idv.cjcat.stardust.common.actions.triggers.*;
import idv.cjcat.stardust.*;
import idv.cjcat.stardust.common.easing.*;
public class LazyAction extends CompositeAction {
private var _oriented:Oriented;
private var _gravity:Gravity;
private var _deathLife:DeathLife;
private var _collide:Collide;
private var _spin:Spin;
private var _age:Age;
private var _speedLimit:SpeedLimit;
private var _scaleCurve:ScaleCurve;
private var _accelerate:Accelerate;
private var _deathTrigger:DeathTrigger;
private var _stardustSpriteUpdateAction:StardustSpriteUpdate;
private var _move:Move;
private var _damping:Damping;
private var _alphaCurve:AlphaCurve;
private var additionalActions:ActionCollection;
private var _deflect:Deflect;
public function LazyAction(){
additionalActions = new ActionCollection();
super();
_age = new Age();
_deathLife = new DeathLife();
_move = new Move();
_spin = new Spin();
_oriented = new Oriented(1, 90);
_oriented.active = false;
_stardustSpriteUpdateAction = new StardustSpriteUpdate();
_stardustSpriteUpdateAction.active = false;
_deathTrigger = new DeathTrigger();
superAddAction(_age);
superAddAction(_deathLife);
superAddAction(_move);
superAddAction(_spin);
superAddAction(_oriented);
superAddAction(_stardustSpriteUpdateAction);
superAddAction(_deathTrigger);
_collide = new Collide();
_speedLimit = new SpeedLimit(25);
_deflect = new Deflect();
_gravity = new Gravity();
_damping = new Damping();
_accelerate = new Accelerate(0);
_collide.active = false;
superAddAction(_collide);
superAddAction(_speedLimit);
superAddAction(_deflect);
superAddAction(_damping);
superAddAction(_gravity);
superAddAction(_accelerate);
_scaleCurve = new ScaleCurve(0, 0);
_alphaCurve = new AlphaCurve(0, 0);
superAddAction(_scaleCurve);
superAddAction(_alphaCurve);
}
public function set acceleration(_arg1:Number):void{
_accelerate.acceleration = _arg1;
}
public function get damping():Number{
return (_damping.damping);
}
public function set damping(_arg1:Number):void{
_damping.damping = _arg1;
}
public function get outScaleLifespan():Number{
return (_scaleCurve.outLifespan);
}
public function set outScaleLifespan(_arg1:Number):void{
_scaleCurve.outLifespan = _arg1;
}
public function set orientationOffset(_arg1:Number):void{
_oriented.offset = _arg1;
}
public function get stardustSpriteUpdate():Boolean{
return (_stardustSpriteUpdateAction.active);
}
public function set outScaleFunctionExtraParams(_arg1:Array):void{
_scaleCurve.outFunctionExtraParams = _arg1;
}
public function set inScaleLifespan(_arg1:Number):void{
_scaleCurve.inLifespan = _arg1;
}
public function get inScaleFunction():Function{
return (_scaleCurve.inFunction);
}
public function get ageMultiplier():Number{
return (_age.multiplier);
}
public function set stardustSpriteUpdate(_arg1:Boolean):void{
_stardustSpriteUpdateAction.active = _arg1;
}
public function get inScale():Number{
return (_scaleCurve.inScale);
}
public function set outScaleFunction(_arg1:Function):void{
_scaleCurve.outFunction = _arg1;
}
override public function getXMLTagName():String{
return ("LazyAction");
}
public function set outAlphaLifespan(_arg1:Number):void{
_alphaCurve.outLifespan = _arg1;
}
public function get outAlphaLifespan():Number{
return (_alphaCurve.outLifespan);
}
public function get inAlphaFunction():Function{
return (_alphaCurve.inFunction);
}
public function get collision():Boolean{
return (_collide.active);
}
override public function addAction(_arg1:Action):void{
super.addAction(_arg1);
additionalActions.addAction(_arg1);
}
public function set outScale(_arg1:Number):void{
_scaleCurve.outScale = _arg1;
}
public function get inAlpha():Number{
return (_alphaCurve.inAlpha);
}
public function set inScaleFunction(_arg1:Function):void{
_scaleCurve.inFunction = _arg1;
}
public function set inAlphaLifespan(_arg1:Number):void{
_alphaCurve.inLifespan = _arg1;
}
public function get orientationFactor():Number{
return (_oriented.factor);
}
public function set spinMultiplier(_arg1:Number):void{
_spin.multiplier = _arg1;
}
public function set ageMultiplier(_arg1:Number):void{
_age.multiplier = _arg1;
}
public function set oriented(_arg1:Boolean):void{
_oriented.active = _arg1;
}
public function set inScale(_arg1:Number):void{
_scaleCurve.inScale = _arg1;
}
public function get gravity():Gravity{
return (_gravity);
}
public function set outAlphaFunction(_arg1:Function):void{
_alphaCurve.outFunction = _arg1;
}
public function get inScaleFunctionExtraParams():Array{
return (_scaleCurve.inFunctionExtraParams);
}
override public function getRelatedObjects():Array{
return (deathTrigger.sd::actions.sd::actions.concat(additionalActions.sd::actions));
}
public function get deflectors():Deflect{
return (_deflect);
}
public function set inAlphaFunction(_arg1:Function):void{
_alphaCurve.inFunction = _arg1;
}
public function set outAlpha(_arg1:Number):void{
_alphaCurve.outAlpha = _arg1;
}
public function set speedLimit(_arg1:Number):void{
_speedLimit.limit = _arg1;
}
public function set collision(_arg1:Boolean):void{
_collide.active = _arg1;
}
public function get moveMultiplier():Number{
return (_move.multiplier);
}
override public function parseXML(_arg1:XML, _arg2:XMLBuilder=null):void{
var _local3:XML;
name = _arg1.@name;
active = (_arg1.@active == "true");
mask = parseInt(_arg1.@mask);
ageMultiplier = parseFloat(_arg1.@ageMultiplier);
moveMultiplier = parseFloat(_arg1.@moveMultiplier);
spinMultiplier = parseFloat(_arg1.@spinMultiplier);
oriented = (_arg1.@oriented == "true");
orientationFactor = parseFloat(_arg1.@orientationFactor);
orientationOffset = parseFloat(_arg1.@orientationOffset);
undead = (_arg1.@undead == "true");
stardustSpriteUpdate = (_arg1.@stardustSpriteUpdate == "true");
_deathTrigger.clearActions();
for each (_local3 in _arg1.deathTriggerActions.*) {
_deathTrigger.addAction((_arg2.getElementByName(_local3.@name) as Action));
};
additionalActions.clearActions();
for each (_local3 in _arg1.actions.*) {
addAction((_arg2.getElementByName(_local3.@name) as Action));
};
collision = (_arg1.@collision == "true");
speedLimit = parseFloat(_arg1.@speedLimit);
damping = parseFloat(_arg1.@damping);
acceleration = parseFloat(_arg1.@acceleration);
deflectors.clearDeflectors();
for each (_local3 in _arg1.deflectors.*) {
deflectors.addDeflector((_arg2.getElementByName(_local3.@name) as Deflector));
};
gravity.clearFields();
for each (_local3 in _arg1.gravityFields.*) {
gravity.addField((_arg2.getElementByName(_local3.@name) as Field));
};
inScale = parseFloat(_arg1.@inScale);
outScale = parseFloat(_arg1.@outScale);
inScaleLifespan = parseFloat(_arg1.@inScaleLifespan);
outScaleLifespan = parseFloat(_arg1.@outScaleLifespan);
inScaleFunction = EasingFunctionType.functions[_arg1.@inScaleFunction.toString()];
outScaleFunction = EasingFunctionType.functions[_arg1.@outScaleFunction.toString()];
inAlpha = parseFloat(_arg1.@inAlpha);
outAlpha = parseFloat(_arg1.@outAlpha);
inAlphaLifespan = parseFloat(_arg1.@inAlphaLifespan);
outAlphaLifespan = parseFloat(_arg1.@outAlphaLifespan);
inAlphaFunction = EasingFunctionType.functions[_arg1.@inAlphaFunction.toString()];
outAlphaFunction = EasingFunctionType.functions[_arg1.@outAlphaFunction.toString()];
}
public function set inAlpha(_arg1:Number):void{
_alphaCurve.inAlpha = _arg1;
}
public function get undead():Boolean{
return (!(_deathLife.active));
}
public function set orientationFactor(_arg1:Number):void{
_oriented.factor = _arg1;
}
public function get outScaleFunctionExtraParams():Array{
return (_scaleCurve.outFunctionExtraParams);
}
public function get orientationOffset():Number{
return (_oriented.offset);
}
public function get inScaleLifespan():Number{
return (_scaleCurve.inLifespan);
}
public function get acceleration():Number{
return (_accelerate.acceleration);
}
public function set inAlphaFunctionExtraParams(_arg1:Array):void{
_alphaCurve.inFunctionExtraParams = _arg1;
}
public function get outScaleFunction():Function{
return (_scaleCurve.outFunction);
}
public function get outScale():Number{
return (_scaleCurve.outScale);
}
public function get inAlphaLifespan():Number{
return (_alphaCurve.inLifespan);
}
public function get spinMultiplier():Number{
return (_spin.multiplier);
}
public function get oriented():Boolean{
return (_oriented.active);
}
public function get outAlphaFunction():Function{
return (_alphaCurve.outFunction);
}
public function get deathTrigger():DeathTrigger{
return (_deathTrigger);
}
public function set inScaleFunctionExtraParams(_arg1:Array):void{
_scaleCurve.inFunctionExtraParams = _arg1;
}
public function get speedLimit():Number{
return (_speedLimit.limit);
}
public function get outAlpha():Number{
return (_alphaCurve.outAlpha);
}
override public function toXML():XML{
var _local2:Action;
var _local3:Deflector;
var _local4:Field;
var _local1:XML = super.toXML();
delete _local1.actions;
_local1.@ageMultiplier = ageMultiplier;
_local1.@moveMultiplier = moveMultiplier;
_local1.@spinMultiplier = spinMultiplier;
_local1.@oriented = oriented;
_local1.@orientationFactor = orientationFactor;
_local1.@orientationOffset = orientationOffset;
_local1.@undead = undead;
_local1.@stardustSpriteUpdate = stardustSpriteUpdate;
if (deathTrigger.sd::actions.sd::actions.length > 0){
_local1.appendChild(<deathTriggerActions/>
);
for each (_local2 in deathTrigger.sd::actions.sd::actions) {
_local1.deathTriggerActions.appendChild(_local2.getXMLTag());
};
};
if (additionalActions.sd::actions.length > 0){
_local1.appendChild(<actions/>
);
for each (_local2 in additionalActions.sd::actions) {
_local1.actions.appendChild(_local2.getXMLTag());
};
};
_local1.@collision = collision;
_local1.@speedLimit = speedLimit;
_local1.@damping = damping;
_local1.@acceleration = acceleration;
if (deflectors.sd::deflectors.length > 0){
_local1.appendChild(<deflectors/>
);
for each (_local3 in deflectors.sd::deflectors) {
_local1.deflectors.appendChild(_local3.getXMLTag());
};
};
if (gravity.sd::fields.length > 0){
_local1.appendChild(<gravityFields/>
);
for each (_local4 in gravity.sd::fields) {
_local1.gravityFields.appendChild(_local4.getXMLTag());
};
};
_local1.@inScale = inScale;
_local1.@outScale = outScale;
_local1.@inScaleLifespan = inScaleLifespan;
_local1.@outScaleLifespan = outScaleLifespan;
_local1.@inScaleFunction = EasingFunctionType.functions[inScaleFunction];
_local1.@outScaleFunction = EasingFunctionType.functions[outScaleFunction];
_local1.@inAlpha = inAlpha;
_local1.@outAlpha = outAlpha;
_local1.@inAlphaLifespan = inAlphaLifespan;
_local1.@outAlphaLifespan = outAlphaLifespan;
_local1.@inAlphaFunction = EasingFunctionType.functions[inAlphaFunction];
_local1.@outAlphaFunction = EasingFunctionType.functions[outAlphaFunction];
return (_local1);
}
public function get inAlphaFunctionExtraParams():Array{
return (_alphaCurve.inFunctionExtraParams);
}
override public function set mask(_arg1:int):void{
super.mask = (_move.mask = (_spin.mask = (_oriented.mask = (_deathLife.mask = (_stardustSpriteUpdateAction.mask = (_deathTrigger.mask = (_collide.mask = (_speedLimit.mask = (_deflect.mask = (_damping.mask = (_gravity.mask = (_accelerate.mask = (_scaleCurve.mask = (_alphaCurve.mask = _arg1))))))))))))));
}
override public function removeAction(_arg1:Action):void{
super.removeAction(_arg1);
additionalActions.removeAction(_arg1);
}
public function set outAlphaFunctionExtraParams(_arg1:Array):void{
_alphaCurve.outFunctionExtraParams = _arg1;
}
public function set moveMultiplier(_arg1:Number):void{
_move.multiplier = _arg1;
}
override public function get mask():int{
return (super.mask);
}
public function get outAlphaFunctionExtraParams():Array{
return (_alphaCurve.outFunctionExtraParams);
}
public function set undead(_arg1:Boolean):void{
_deathLife.active = !(_arg1);
}
protected function superAddAction(_arg1:Action):void{
super.addAction(_arg1);
}
override public function clearActions():void{
super.clearActions();
additionalActions.clearActions();
}
}
}//package idv.cjcat.stardust.twoD.actions
Section 177
//Move (idv.cjcat.stardust.twoD.actions.Move)
package idv.cjcat.stardust.twoD.actions {
import idv.cjcat.stardust.common.xml.*;
import idv.cjcat.stardust.common.particles.*;
import idv.cjcat.stardust.twoD.particles.*;
import idv.cjcat.stardust.common.emitters.*;
public class Move extends Action2D {
public var multiplier:Number;
public function Move(_arg1:Number=1){
this.multiplier = _arg1;
}
override public function getXMLTagName():String{
return ("Move");
}
override public function parseXML(_arg1:XML, _arg2:XMLBuilder=null):void{
super.parseXML(_arg1, _arg2);
multiplier = parseFloat(_arg1.@multiplier);
}
override public function update(_arg1:Emitter, _arg2:Particle, _arg3:Number):void{
var _local4:Particle2D = (_arg2 as Particle2D);
var _local5:Number = (_arg3 * multiplier);
_local4.x = (_local4.x + (_local4.vx * _local5));
_local4.y = (_local4.y + (_local4.vy * _local5));
}
override public function toXML():XML{
var _local1:XML = super.toXML();
_local1.@multiplier = multiplier;
return (_local1);
}
}
}//package idv.cjcat.stardust.twoD.actions
Section 178
//MutualAction (idv.cjcat.stardust.twoD.actions.MutualAction)
package idv.cjcat.stardust.twoD.actions {
import idv.cjcat.stardust.common.xml.*;
import idv.cjcat.stardust.common.particles.*;
import idv.cjcat.stardust.twoD.particles.*;
import idv.cjcat.stardust.common.emitters.*;
import idv.cjcat.stardust.*;
public class MutualAction extends Action2D {
public var maxDistance:Number;
override public function getXMLTagName():String{
return ("MutualAction");
}
protected function doMutualAction(_arg1:Particle2D, _arg2:Particle2D, _arg3:Number):void{
}
override public function parseXML(_arg1:XML, _arg2:XMLBuilder=null):void{
super.parseXML(_arg1, _arg2);
maxDistance = parseFloat(_arg1.@maxDistance);
}
final override public function update(_arg1:Emitter, _arg2:Particle, _arg3:Number):void{
var _local7:Number;
var _local8:Number;
var _local4:Array = _arg1.sd::particles;
var _local5:int = _arg2.sortedIndex;
var _local6:int = (_local5 + 1);
while (_local6 < _local4.length) {
_local7 = (_local4[_local6].x - _local4[_local5].x);
if (_local7 <= maxDistance){
_local8 = (_local4[_local6].y - _local4[_local5].y);
if (_local8 <= maxDistance){
doMutualAction((_local4[_local6] as Particle2D), (_local4[_local5] as Particle2D), _arg3);
};
} else {
break;
};
_local6++;
};
}
final override public function get needsSortedParticles():Boolean{
return (active);
}
override public function toXML():XML{
var _local1:XML = super.toXML();
_local1.@maxDistance = maxDistance;
return (_local1);
}
}
}//package idv.cjcat.stardust.twoD.actions
Section 179
//MutualGravity (idv.cjcat.stardust.twoD.actions.MutualGravity)
package idv.cjcat.stardust.twoD.actions {
import idv.cjcat.stardust.common.xml.*;
import idv.cjcat.stardust.twoD.geom.*;
import idv.cjcat.stardust.twoD.particles.*;
public class MutualGravity extends MutualAction {
public var strength:Number;
public var epsilon:Number;
public var massless:Boolean;
public var attenuationPower:Number;
public function MutualGravity(_arg1:Number=1, _arg2:Number=100, _arg3:Number=1){
this.strength = _arg1;
this.maxDistance = _arg2;
this.epsilon = 1;
this.attenuationPower = _arg3;
this.massless = true;
}
override public function getXMLTagName():String{
return ("MutualGravity");
}
override public function parseXML(_arg1:XML, _arg2:XMLBuilder=null):void{
super.parseXML(_arg1, _arg2);
strength = parseFloat(_arg1.@strength);
epsilon = parseFloat(_arg1.@epsilon);
attenuationPower = parseFloat(_arg1.@attenuationPower);
massless = (_arg1.@massless == "true");
}
override protected function doMutualAction(_arg1:Particle2D, _arg2:Particle2D, _arg3:Number):void{
var _local8:Number;
var _local4:Number = (_arg1.x - _arg2.x);
var _local5:Number = (_arg1.y - _arg2.y);
var _local6:Number = Math.sqrt(((_local4 * _local4) + (_local5 * _local5)));
if (_local6 < epsilon){
_local6 = epsilon;
};
var _local7:Vec2D = Vec2DPool.get(_local4, _local5);
if (massless){
_local7.length = (strength * Math.pow(_local6, -(attenuationPower)));
_arg2.vx = (_arg2.vx + (_local7.x * _arg3));
_arg2.vy = (_arg2.vy + (_local7.y * _arg3));
_arg1.vx = (_arg1.vx - (_local7.x * _arg3));
_arg1.vy = (_arg1.vy - (_local7.y * _arg3));
} else {
_local8 = (((strength * _arg1.mass) * _arg2.mass) * Math.pow(_local6, -(attenuationPower)));
_local7.length = (_local8 / _arg2.mass);
_arg2.vx = (_arg2.vx + (_local7.x * _arg3));
_arg2.vy = (_arg2.vy + (_local7.y * _arg3));
_local7.length = (_local8 / _arg1.mass);
_arg1.vx = (_arg1.vx - (_local7.x * _arg3));
_arg1.vy = (_arg1.vy - (_local7.y * _arg3));
};
Vec2DPool.recycle(_local7);
}
override public function toXML():XML{
var _local1:XML = super.toXML();
_local1.@strength = strength;
_local1.@epsilon = epsilon;
_local1.@attenuationPower = attenuationPower;
_local1.@massless = massless;
return (_local1);
}
}
}//package idv.cjcat.stardust.twoD.actions
Section 180
//NormalDrift (idv.cjcat.stardust.twoD.actions.NormalDrift)
package idv.cjcat.stardust.twoD.actions {
import idv.cjcat.stardust.common.xml.*;
import idv.cjcat.stardust.common.particles.*;
import idv.cjcat.stardust.twoD.geom.*;
import idv.cjcat.stardust.twoD.particles.*;
import idv.cjcat.stardust.common.emitters.*;
import idv.cjcat.stardust.common.math.*;
public class NormalDrift extends Action2D {
private var _random:Random;
public var max:Number;
public var massless:Boolean;
public function NormalDrift(_arg1:Number=0.2, _arg2:Random=null){
this.massless = true;
this.max = _arg1;
this.random = _arg2;
}
public function get random():Random{
return (_random);
}
public function set random(_arg1:Random):void{
if (!_arg1){
_arg1 = new UniformRandom();
};
_random = _arg1;
}
override public function update(_arg1:Emitter, _arg2:Particle, _arg3:Number):void{
var _local4:Particle2D = (_arg2 as Particle2D);
var _local5:Vec2D = Vec2DPool.get(_local4.vy, _local4.vx);
random.setRange(-(max), max);
_local5.length = random.random();
if (!massless){
_local5.length = (_local5.length / _local4.mass);
};
_local4.vx = (_local4.vx + (_local5.x * _arg3));
_local4.vy = (_local4.vy + (_local5.y * _arg3));
Vec2DPool.recycle(_local5);
}
override public function parseXML(_arg1:XML, _arg2:XMLBuilder=null):void{
super.parseXML(_arg1, _arg2);
massless = (_arg1.@massless == "true");
max = parseFloat(_arg1.@max);
random = (_arg2.getElementByName(_arg1.@random) as Random);
}
override public function toXML():XML{
var _local1:XML = super.toXML();
_local1.@massless = massless;
_local1.@max = max;
_local1.@random = _random.name;
return (_local1);
}
override public function getXMLTagName():String{
return ("NormalDrift");
}
override public function getRelatedObjects():Array{
return ([_random]);
}
}
}//package idv.cjcat.stardust.twoD.actions
Section 181
//Oriented (idv.cjcat.stardust.twoD.actions.Oriented)
package idv.cjcat.stardust.twoD.actions {
import idv.cjcat.stardust.common.xml.*;
import idv.cjcat.stardust.common.particles.*;
import idv.cjcat.stardust.twoD.particles.*;
import idv.cjcat.stardust.common.emitters.*;
import idv.cjcat.stardust.common.math.*;
public class Oriented extends Action2D {
public var offset:Number;
public var factor:Number;
public function Oriented(_arg1:Number=1, _arg2:Number=0){
this.factor = _arg1;
this.offset = _arg2;
}
override public function parseXML(_arg1:XML, _arg2:XMLBuilder=null):void{
super.parseXML(_arg1, _arg2);
factor = parseFloat(_arg1.@factor);
offset = parseFloat(_arg1.@offset);
}
override public function getXMLTagName():String{
return ("Oriented");
}
override public function update(_arg1:Emitter, _arg2:Particle, _arg3:Number):void{
var _local4:Particle2D = (_arg2 as Particle2D);
var _local5:Number = ((((Math.atan2(_local4.vy, _local4.vx) * StardustMath.RADIAN_TO_DEGREE) + offset) + 90) - _local4.rotation);
_local4.rotation = (_local4.rotation + ((factor / _arg3) * _local5));
}
override public function toXML():XML{
var _local1:XML = super.toXML();
_local1.@factor = factor;
_local1.@offset = offset;
return (_local1);
}
}
}//package idv.cjcat.stardust.twoD.actions
Section 182
//RandomDrift (idv.cjcat.stardust.twoD.actions.RandomDrift)
package idv.cjcat.stardust.twoD.actions {
import idv.cjcat.stardust.common.xml.*;
import idv.cjcat.stardust.common.particles.*;
import idv.cjcat.stardust.twoD.particles.*;
import idv.cjcat.stardust.common.emitters.*;
import idv.cjcat.stardust.common.math.*;
public class RandomDrift extends Action2D {
public var massless:Boolean;
public var maxX:Number;
private var _randomX:Random;
private var _randomY:Random;
public var maxY:Number;
public function RandomDrift(_arg1:Number=0.2, _arg2:Number=0.2, _arg3:Random=null, _arg4:Random=null){
this.massless = true;
this.maxX = _arg1;
this.maxY = _arg2;
this.randomX = _arg3;
this.randomY = _arg4;
}
override public function toXML():XML{
var _local1:XML = super.toXML();
_local1.@massless = massless;
_local1.@maxX = maxX;
_local1.@maxY = maxY;
_local1.@randomX = _randomX.name;
_local1.@randomY = _randomY.name;
return (_local1);
}
override public function getXMLTagName():String{
return ("RandomDrift");
}
override public function parseXML(_arg1:XML, _arg2:XMLBuilder=null):void{
super.parseXML(_arg1, _arg2);
massless = (_arg1.@massless == "true");
maxX = parseFloat(_arg1.@maxX);
maxY = parseFloat(_arg1.@maxY);
randomX = (_arg2.getElementByName(_arg1.@randomX) as Random);
randomY = (_arg2.getElementByName(_arg1.@randomY) as Random);
}
override public function update(_arg1:Emitter, _arg2:Particle, _arg3:Number):void{
var _local7:Number;
var _local4:Particle2D = (_arg2 as Particle2D);
randomX.setRange(-(maxX), maxX);
randomY.setRange(-(maxY), maxY);
var _local5:Number = randomX.random();
var _local6:Number = randomY.random();
if (!massless){
_local7 = (1 / _local4.mask);
_local5 = (_local5 * _local7);
_local6 = (_local6 * _local7);
};
_local4.vx = (_local4.vx + (_local5 * _arg3));
_local4.vy = (_local4.vy + (_local6 * _arg3));
}
public function set randomX(_arg1:Random):void{
if (!_arg1){
_arg1 = new UniformRandom();
};
_randomX = _arg1;
}
public function get randomX():Random{
return (_randomX);
}
public function set randomY(_arg1:Random):void{
if (!_arg1){
_arg1 = new UniformRandom();
};
_randomY = _arg1;
}
public function get randomY():Random{
return (_randomY);
}
override public function getRelatedObjects():Array{
return ([_randomX, _randomY]);
}
}
}//package idv.cjcat.stardust.twoD.actions
Section 183
//ReorderDisplayObject (idv.cjcat.stardust.twoD.actions.ReorderDisplayObject)
package idv.cjcat.stardust.twoD.actions {
import flash.display.*;
import idv.cjcat.stardust.common.xml.*;
import idv.cjcat.stardust.common.particles.*;
import idv.cjcat.stardust.twoD.particles.*;
import idv.cjcat.stardust.common.emitters.*;
import idv.cjcat.stardust.twoD.display.*;
public class ReorderDisplayObject extends Action2D {
public var addChildMode:int;
public function ReorderDisplayObject(_arg1:int=0){
this.addChildMode = _arg1;
}
override public function getXMLTagName():String{
return ("ReorderDisplayObject");
}
override public function parseXML(_arg1:XML, _arg2:XMLBuilder=null):void{
super.parseXML(_arg1, _arg2);
addChildMode = parseInt(_arg1.@addChildMode);
}
override public function update(_arg1:Emitter, _arg2:Particle, _arg3:Number):void{
var _local4:Particle2D = (_arg2 as Particle2D);
var _local5:DisplayObject = (_local4.target as DisplayObject);
var _local6:DisplayObjectContainer = (_local5.parent as DisplayObjectContainer);
switch (addChildMode){
case AddChildMode.TOP:
_local6.addChild(_local5);
break;
case AddChildMode.BOTTOM:
_local6.addChildAt(_local5, 0);
break;
default:
_local6.addChildAt(_local5, Math.floor((Math.random() * _local6.numChildren)));
break;
};
}
override public function toXML():XML{
var _local1:XML = super.toXML();
_local1.@addChildMode = addChildMode;
return (_local1);
}
}
}//package idv.cjcat.stardust.twoD.actions
Section 184
//Spawn (idv.cjcat.stardust.twoD.actions.Spawn)
package idv.cjcat.stardust.twoD.actions {
import idv.cjcat.stardust.common.initializers.*;
import idv.cjcat.stardust.common.xml.*;
import idv.cjcat.stardust.common.particles.*;
import idv.cjcat.stardust.twoD.geom.*;
import idv.cjcat.stardust.twoD.particles.*;
import idv.cjcat.stardust.common.emitters.*;
import idv.cjcat.stardust.common.math.*;
import idv.cjcat.stardust.*;
public class Spawn extends Action2D implements InitializerCollector {
public var inheritDirection:Boolean;
private var _factory:Particle2DFactory;
private var _countRandom:Random;
public var inheritVelocity:Boolean;
public function Spawn(_arg1:Random=null, _arg2:Boolean=true, _arg3:Boolean=false){
this.inheritDirection = _arg2;
this.inheritVelocity = _arg3;
this.countRandom = _arg1;
_factory = new Particle2DFactory();
}
public function addInitializer(_arg1:Initializer):void{
_factory.addInitializer(_arg1);
}
override public function toXML():XML{
var _local2:Initializer;
var _local1:XML = super.toXML();
_local1.@inheritDirection = inheritDirection;
_local1.@inheritVelocity = inheritVelocity;
_local1.@countRandom = _countRandom.name;
if (_factory.sd::initializerCollection.sd::initializers.length > 0){
_local1.appendChild(<initializers/>
);
for each (_local2 in _factory.sd::initializerCollection.sd::initializers) {
_local1.initializers.appendChild(_local2.getXMLTag());
};
};
return (_local1);
}
override public function update(_arg1:Emitter, _arg2:Particle, _arg3:Number):void{
var _local6:Particle2D;
var _local7:Vec2D;
var _local4:Particle2D = (_arg2 as Particle2D);
var _local5:Array = _factory.createParticles(StardustMath.randomFloor((_countRandom.random() * _arg3)));
for each (_local6 in _local5) {
_local6.x = (_local6.x + _local4.x);
_local6.y = (_local6.y + _local4.y);
if (inheritVelocity){
_local6.vx = (_local6.vx + _local4.vx);
_local6.vy = (_local6.vy + _local4.vy);
};
if (inheritDirection){
_local7 = Vec2DPool.get(_local6.vx, _local6.vy);
_local7.rotateThis(Math.atan2(_local4.vx, -(_local4.vy)), true);
_local6.vx = _local7.x;
_local6.vy = _local7.y;
Vec2DPool.recycle(_local7);
};
};
_arg1.addParticles(_local5);
}
public function clearInitializers():void{
_factory.clearInitializers();
}
override public function getXMLTagName():String{
return ("Spawn");
}
public function get countRandom():Random{
return (_countRandom);
}
public function set countRandom(_arg1:Random):void{
if (!_arg1){
_arg1 = new UniformRandom(0, 0);
};
_countRandom = _arg1;
}
override public function parseXML(_arg1:XML, _arg2:XMLBuilder=null):void{
var _local3:XML;
super.parseXML(_arg1, _arg2);
inheritDirection = (_arg1.@inheritDirection == "true");
inheritVelocity = (_arg1.@inheritVelocity == "true");
countRandom = (_arg2.getElementByName(_arg1.@countRandom) as Random);
clearInitializers();
for each (_local3 in _arg1.initializers.*) {
addInitializer((_arg2.getElementByName(_local3.@name) as Initializer));
};
}
public function removeInitializer(_arg1:Initializer):void{
_factory.removeInitializer(_arg1);
}
override public function getRelatedObjects():Array{
return ([_countRandom].concat(_factory.sd::initializerCollection.sd::initializers));
}
}
}//package idv.cjcat.stardust.twoD.actions
Section 185
//SpeedLimit (idv.cjcat.stardust.twoD.actions.SpeedLimit)
package idv.cjcat.stardust.twoD.actions {
import idv.cjcat.stardust.common.xml.*;
import idv.cjcat.stardust.common.particles.*;
import idv.cjcat.stardust.twoD.particles.*;
import idv.cjcat.stardust.common.emitters.*;
public class SpeedLimit extends Action2D {
public var limit:Number;
public function SpeedLimit(_arg1:Number=1.79769313486232E308){
this.limit = _arg1;
}
override public function parseXML(_arg1:XML, _arg2:XMLBuilder=null):void{
super.parseXML(_arg1, _arg2);
limit = parseFloat(_arg1.@limit);
}
override public function getXMLTagName():String{
return ("SpeedLimit");
}
override public function update(_arg1:Emitter, _arg2:Particle, _arg3:Number):void{
var _local6:Number;
var _local4:Particle2D = (_arg2 as Particle2D);
var _local5:Number = ((_local4.vx * _local4.vx) + (_local4.vy * _local4.vy));
if (_local5 > (limit * limit)){
_local6 = (limit / Math.sqrt(_local5));
_local4.vx = (_local4.vx * _local6);
_local4.vy = (_local4.vy * _local6);
};
}
override public function toXML():XML{
var _local1:XML = super.toXML();
_local1.@limit = limit;
return (_local1);
}
}
}//package idv.cjcat.stardust.twoD.actions
Section 186
//Spin (idv.cjcat.stardust.twoD.actions.Spin)
package idv.cjcat.stardust.twoD.actions {
import idv.cjcat.stardust.common.xml.*;
import idv.cjcat.stardust.common.particles.*;
import idv.cjcat.stardust.twoD.particles.*;
import idv.cjcat.stardust.common.emitters.*;
public class Spin extends Action2D {
public var multiplier:Number;
public function Spin(_arg1:Number=1){
this.multiplier = _arg1;
}
override public function getXMLTagName():String{
return ("Spin");
}
override public function parseXML(_arg1:XML, _arg2:XMLBuilder=null):void{
super.parseXML(_arg1, _arg2);
multiplier = parseFloat(_arg1.@multiplier);
}
override public function update(_arg1:Emitter, _arg2:Particle, _arg3:Number):void{
var _local4:Particle2D = (_arg2 as Particle2D);
(_arg2 as Particle2D).rotation = (_local4.rotation + ((_local4.omega * _arg3) * multiplier));
}
override public function toXML():XML{
var _local1:XML = super.toXML();
_local1.@multiplier = multiplier;
return (_local1);
}
}
}//package idv.cjcat.stardust.twoD.actions
Section 187
//StardustSpriteUpdate (idv.cjcat.stardust.twoD.actions.StardustSpriteUpdate)
package idv.cjcat.stardust.twoD.actions {
import idv.cjcat.stardust.common.particles.*;
import idv.cjcat.stardust.common.emitters.*;
import idv.cjcat.stardust.twoD.display.*;
public class StardustSpriteUpdate extends Action2D {
override public function update(_arg1:Emitter, _arg2:Particle, _arg3:Number):void{
if ((_arg2.target is StardustSprite)){
StardustSprite(_arg2.target).update(_arg1, _arg2, _arg3);
};
}
override public function getXMLTagName():String{
return ("StardustSpriteUpdate");
}
}
}//package idv.cjcat.stardust.twoD.actions
Section 188
//VelocityField (idv.cjcat.stardust.twoD.actions.VelocityField)
package idv.cjcat.stardust.twoD.actions {
import idv.cjcat.stardust.common.xml.*;
import idv.cjcat.stardust.common.particles.*;
import idv.cjcat.stardust.twoD.geom.*;
import idv.cjcat.stardust.twoD.particles.*;
import idv.cjcat.stardust.common.emitters.*;
import idv.cjcat.stardust.twoD.fields.*;
public class VelocityField extends Action2D {
public var field:Field;
public function VelocityField(_arg1:Field=null){
this.field = _arg1;
}
override public function parseXML(_arg1:XML, _arg2:XMLBuilder=null):void{
super.parseXML(_arg1, _arg2);
if (_arg1.@field == "null"){
field = null;
} else {
field = (_arg2.getElementByName(_arg1.@field) as Field);
};
}
override public function update(_arg1:Emitter, _arg2:Particle, _arg3:Number):void{
var _local5:MotionData2D;
if (!field){
return;
};
var _local4:Particle2D = (_arg2 as Particle2D);
_local5 = field.getMotionData2D(_local4);
_local4.vx = _local5.x;
_local4.vy = _local5.y;
MotionData2DPool.recycle(_local5);
}
override public function getXMLTagName():String{
return ("VelocityField");
}
override public function toXML():XML{
var _local1:XML = super.toXML();
if (!field){
_local1.@field = "null";
} else {
_local1.@field = field.name;
};
return (_local1);
}
override public function getRelatedObjects():Array{
if (field != null){
return ([field]);
};
return ([]);
}
}
}//package idv.cjcat.stardust.twoD.actions
Section 189
//BoundingBox (idv.cjcat.stardust.twoD.deflectors.BoundingBox)
package idv.cjcat.stardust.twoD.deflectors {
import idv.cjcat.stardust.common.xml.*;
import idv.cjcat.stardust.twoD.geom.*;
import idv.cjcat.stardust.twoD.particles.*;
public class BoundingBox extends Deflector {
public var width:Number;
public var height:Number;
public var x:Number;
public var y:Number;
public function BoundingBox(_arg1:Number=0, _arg2:Number=0, _arg3:Number=640, _arg4:Number=480){
this.bounce = 1;
this.x = _arg1;
this.y = _arg2;
this.width = _arg3;
this.height = _arg4;
}
override public function getXMLTagName():String{
return ("BoundingBox");
}
override public function parseXML(_arg1:XML, _arg2:XMLBuilder=null):void{
super.parseXML(_arg1, _arg2);
x = parseFloat(_arg1.@x);
y = parseFloat(_arg1.@y);
width = parseFloat(_arg1.@width);
height = parseFloat(_arg1.@height);
}
override protected function calculateMotionData4D(_arg1:Particle2D):MotionData4D{
var _local2:Number = (_arg1.collisionRadius * _arg1.scale);
var _local3:Number = (x + _local2);
var _local4:Number = ((x + width) - _local2);
var _local5:Number = (y + _local2);
var _local6:Number = ((y + height) - _local2);
var _local7:Number = -(bounce);
var _local8:Number = _arg1.x;
var _local9:Number = _arg1.y;
var _local10:Number = _arg1.vx;
var _local11:Number = _arg1.vy;
if (_arg1.x <= _local3){
_local8 = _local3;
_local10 = (_local10 * _local7);
} else {
if (_arg1.x >= _local4){
_local8 = _local4;
_local10 = (_local10 * _local7);
};
};
if (_arg1.y <= _local5){
_local9 = _local5;
_local11 = (_local11 * _local7);
} else {
if (_arg1.y >= _local6){
_local9 = _local6;
_local11 = (_local11 * _local7);
};
};
return (MotionData4DPool.get(_local8, _local9, _local10, _local11));
}
override public function toXML():XML{
var _local1:XML = super.toXML();
_local1.@x = x;
_local1.@y = y;
_local1.@width = width;
_local1.@height = height;
return (_local1);
}
}
}//package idv.cjcat.stardust.twoD.deflectors
Section 190
//BoundingCircle (idv.cjcat.stardust.twoD.deflectors.BoundingCircle)
package idv.cjcat.stardust.twoD.deflectors {
import idv.cjcat.stardust.common.xml.*;
import idv.cjcat.stardust.twoD.geom.*;
import idv.cjcat.stardust.twoD.particles.*;
public class BoundingCircle extends Deflector {
public var y:Number;
public var radius:Number;
public var x:Number;
public function BoundingCircle(_arg1:Number=0, _arg2:Number=0, _arg3:Number=100){
this.bounce = 1;
this.x = _arg1;
this.y = _arg2;
this.radius = _arg3;
}
override public function parseXML(_arg1:XML, _arg2:XMLBuilder=null):void{
super.parseXML(_arg1, _arg2);
x = parseFloat(_arg1.@x);
y = parseFloat(_arg1.@y);
radius = parseFloat(_arg1.@radius);
}
override public function getXMLTagName():String{
return ("BoundingCircle");
}
override protected function calculateMotionData4D(_arg1:Particle2D):MotionData4D{
var _local2:Number = (_arg1.collisionRadius * _arg1.scale);
var _local3:Vec2D = Vec2DPool.get((_arg1.x - x), (_arg1.y - y));
var _local4:Number = (_local3.length + _local2);
if (_local4 < radius){
return (MotionData4DPool.get(_arg1.x, _arg1.y, _arg1.vx, _arg1.vy));
};
_local3.length = (radius - _local2);
var _local5:Vec2D = Vec2DPool.get(_arg1.vx, _arg1.vy);
_local5.projectThis(_local3);
var _local6:Number = (1 + bounce);
Vec2DPool.recycle(_local3);
Vec2DPool.recycle(_local5);
return (MotionData4DPool.get((x + _local3.x), (y + _local3.y), (_arg1.vx - (_local6 * _local5.x)), (_arg1.vy - (_local6 * _local5.y))));
}
override public function toXML():XML{
var _local1:XML = super.toXML();
_local1.@x = x;
_local1.@y = y;
_local1.@radius = radius;
return (_local1);
}
}
}//package idv.cjcat.stardust.twoD.deflectors
Section 191
//CircleDeflector (idv.cjcat.stardust.twoD.deflectors.CircleDeflector)
package idv.cjcat.stardust.twoD.deflectors {
import idv.cjcat.stardust.common.xml.*;
import idv.cjcat.stardust.twoD.geom.*;
import idv.cjcat.stardust.twoD.particles.*;
public class CircleDeflector extends Deflector {
public var y:Number;// = 0
public var radius:Number;
public var x:Number;// = 0
public function CircleDeflector(_arg1:Number=0, _arg2:Number=0, _arg3:Number=100){
this.x = _arg1;
this.y = _arg2;
this.radius = _arg3;
}
override public function parseXML(_arg1:XML, _arg2:XMLBuilder=null):void{
super.parseXML(_arg1, _arg2);
x = parseFloat(_arg1.@x);
y = parseFloat(_arg1.@y);
radius = parseFloat(_arg1.@radius);
}
override public function getXMLTagName():String{
return ("CircleDeflector");
}
override protected function calculateMotionData4D(_arg1:Particle2D):MotionData4D{
var _local2:Number = (_arg1.collisionRadius * _arg1.scale);
var _local3:Vec2D = Vec2DPool.get((_arg1.x - x), (_arg1.y - y));
var _local4:Number = (_local3.length - _local2);
if (_local4 > radius){
return (MotionData4DPool.get(_arg1.x, _arg1.y, _arg1.vx, _arg1.vy));
};
_local3.length = (radius + _local2);
var _local5:Vec2D = Vec2DPool.get(_arg1.vx, _arg1.vy);
_local5.projectThis(_local3);
var _local6:Number = (1 + bounce);
Vec2DPool.recycle(_local3);
Vec2DPool.recycle(_local5);
return (MotionData4DPool.get((x + _local3.x), (y + _local3.y), (_arg1.vx - (_local5.x * _local6)), (_arg1.vy - (_local5.y * _local6))));
}
override public function toXML():XML{
var _local1:XML = super.toXML();
_local1.@x = x;
_local1.@y = y;
_local1.@radius = radius;
return (_local1);
}
}
}//package idv.cjcat.stardust.twoD.deflectors
Section 192
//Deflector (idv.cjcat.stardust.twoD.deflectors.Deflector)
package idv.cjcat.stardust.twoD.deflectors {
import idv.cjcat.stardust.common.xml.*;
import idv.cjcat.stardust.common.*;
import idv.cjcat.stardust.twoD.geom.*;
import idv.cjcat.stardust.twoD.particles.*;
public class Deflector extends StardustElement {
public var bounce:Number;
public var active:Boolean;
public function Deflector(){
active = true;
bounce = 0.8;
}
override public function getElementTypeXMLTag():XML{
return (<deflectors/>
);
}
override public function parseXML(_arg1:XML, _arg2:XMLBuilder=null):void{
super.parseXML(_arg1, _arg2);
active = (_arg1.@active == "true");
bounce = parseFloat(_arg1.@bounce);
}
final public function getMotionData4D(_arg1:Particle2D):MotionData4D{
if (!active){
return (MotionData4DPool.get(_arg1.x, _arg1.y, _arg1.vx, _arg1.vy));
};
return (calculateMotionData4D(_arg1));
}
override public function getXMLTagName():String{
return ("Deflector");
}
protected function calculateMotionData4D(_arg1:Particle2D):MotionData4D{
return (null);
}
override public function toXML():XML{
var _local1:XML = super.toXML();
_local1.@active = active;
_local1.@bounce = bounce;
return (_local1);
}
}
}//package idv.cjcat.stardust.twoD.deflectors
Section 193
//LineDeflector (idv.cjcat.stardust.twoD.deflectors.LineDeflector)
package idv.cjcat.stardust.twoD.deflectors {
import idv.cjcat.stardust.common.xml.*;
import idv.cjcat.stardust.twoD.geom.*;
import idv.cjcat.stardust.twoD.particles.*;
public class LineDeflector extends Deflector {
private var _normal:Vec2D;
public var x:Number;
public var y:Number;
public function LineDeflector(_arg1:Number=0, _arg2:Number=0, _arg3:Number=0, _arg4:Number=-1){
this.x = _arg1;
this.y = _arg2;
_normal = new Vec2D(_arg3, _arg4);
}
override public function getXMLTagName():String{
return ("LineDeflector");
}
public function get normal():Vec2D{
return (_normal);
}
override public function parseXML(_arg1:XML, _arg2:XMLBuilder=null):void{
super.parseXML(_arg1, _arg2);
x = parseFloat(_arg1.@x);
y = parseFloat(_arg1.@y);
normal.x = parseFloat(_arg1.@normalX);
normal.y = parseFloat(_arg1.@normalY);
}
override protected function calculateMotionData4D(_arg1:Particle2D):MotionData4D{
var _local2:Vec2D = Vec2DPool.get((_arg1.x - x), (_arg1.y - y));
_local2 = _local2.project(normal);
var _local3:Number = _local2.dot(normal);
var _local4:Number = (_arg1.collisionRadius * _arg1.scale);
var _local5:Number = _local2.length;
if (_local3 > 0){
if (_local5 > _local4){
return (new MotionData4D(_arg1.x, _arg1.y, _arg1.vx, _arg1.vy));
};
_local2.length = (_local4 - _local5);
} else {
_local2.length = -((_local5 + _local4));
};
var _local6:Vec2D = Vec2DPool.get(_arg1.vx, _arg1.vy);
_local6 = _local6.project(normal);
var _local7:Number = (1 + bounce);
Vec2DPool.recycle(_local2);
Vec2DPool.recycle(_local6);
return (MotionData4DPool.get((_arg1.x + _local2.x), (_arg1.y + _local2.y), (_arg1.vx - (_local6.x * _local7)), (_arg1.vy - (_local6.y * _local7))));
}
override public function toXML():XML{
var _local1:XML = super.toXML();
_local1.@x = x;
_local1.@y = y;
_local1.@normalX = normal.x;
_local1.@normalY = normal.y;
return (_local1);
}
}
}//package idv.cjcat.stardust.twoD.deflectors
Section 194
//WrappingBox (idv.cjcat.stardust.twoD.deflectors.WrappingBox)
package idv.cjcat.stardust.twoD.deflectors {
import idv.cjcat.stardust.common.xml.*;
import idv.cjcat.stardust.twoD.geom.*;
import idv.cjcat.stardust.twoD.particles.*;
import idv.cjcat.stardust.common.math.*;
public class WrappingBox extends Deflector {
public var width:Number;
public var height:Number;
public var x:Number;
public var y:Number;
public function WrappingBox(_arg1:Number=0, _arg2:Number=0, _arg3:Number=640, _arg4:Number=480){
this.x = _arg1;
this.y = _arg2;
this.width = _arg3;
this.height = _arg4;
}
override public function getXMLTagName():String{
return ("WrappingBox");
}
override public function parseXML(_arg1:XML, _arg2:XMLBuilder=null):void{
super.parseXML(_arg1, _arg2);
x = parseFloat(_arg1.@x);
y = parseFloat(_arg1.@y);
width = parseFloat(_arg1.@width);
height = parseFloat(_arg1.@height);
}
override protected function calculateMotionData4D(_arg1:Particle2D):MotionData4D{
var _local2:Number = x;
var _local3:Number = (x + width);
var _local4:Number = y;
var _local5:Number = (y + height);
var _local6:Number = StardustMath.mod((_arg1.x - x), width);
var _local7:Number = StardustMath.mod((_arg1.y - y), height);
return (MotionData4DPool.get((x + _local6), (y + _local7), _arg1.vx, _arg1.vy));
}
override public function toXML():XML{
var _local1:XML = super.toXML();
delete _local1.@bounce;
_local1.@x = x;
_local1.@y = y;
_local1.@width = width;
_local1.@height = height;
return (_local1);
}
}
}//package idv.cjcat.stardust.twoD.deflectors
Section 195
//AddChildMode (idv.cjcat.stardust.twoD.display.AddChildMode)
package idv.cjcat.stardust.twoD.display {
public class AddChildMode {
public static const RANDOM:int = 0;
public static const TOP:int = 1;
public static const BOTTOM:int = 2;
}
}//package idv.cjcat.stardust.twoD.display
Section 196
//StardustSprite (idv.cjcat.stardust.twoD.display.StardustSprite)
package idv.cjcat.stardust.twoD.display {
import flash.display.*;
import idv.cjcat.stardust.common.particles.*;
import idv.cjcat.stardust.common.emitters.*;
public class StardustSprite extends Sprite {
public function update(_arg1:Emitter, _arg2:Particle, _arg3:Number):void{
}
}
}//package idv.cjcat.stardust.twoD.display
Section 197
//Emitter2D (idv.cjcat.stardust.twoD.emitters.Emitter2D)
package idv.cjcat.stardust.twoD.emitters {
import idv.cjcat.stardust.common.initializers.*;
import idv.cjcat.stardust.common.actions.*;
import flash.utils.*;
import idv.cjcat.stardust.common.clocks.*;
import idv.cjcat.stardust.twoD.particles.*;
import idv.cjcat.stardust.common.emitters.*;
import idv.cjcat.stardust.*;
import flash.errors.*;
public class Emitter2D extends Emitter {
public function Emitter2D(_arg1:Clock=null){
super(_arg1);
particleSorter = Particle2DXSorter.getInstance();
factory = new Particle2DFactory();
factory.sd::usePool = true;
}
final override public function addInitializer(_arg1:Initializer):void{
if (!_arg1.supports2D){
throw (new IllegalOperationError(("This initializer does not support 2D: " + getQualifiedClassName((Object(_arg1).constructor as Class)))));
};
super.addInitializer(_arg1);
}
override public function getXMLTagName():String{
return ("Emitter2D");
}
final override public function addAction(_arg1:Action):void{
if (!_arg1.supports2D){
throw (new IllegalOperationError(("This action does not support 2D: " + getQualifiedClassName((Object(_arg1).constructor as Class)))));
};
super.addAction(_arg1);
}
}
}//package idv.cjcat.stardust.twoD.emitters
Section 198
//Vec2DEvent (idv.cjcat.stardust.twoD.events.Vec2DEvent)
package idv.cjcat.stardust.twoD.events {
import flash.events.*;
import idv.cjcat.stardust.twoD.geom.*;
public class Vec2DEvent extends Event {
private var _vec:Vec2D;
public static const CHANGE:String = "stardustVec2DChange";
public function Vec2DEvent(_arg1:String, _arg2:Vec2D){
super(_arg1);
_vec = _arg2;
}
public function get vec():Vec2D{
return (_vec);
}
}
}//package idv.cjcat.stardust.twoD.events
Section 199
//BitmapField (idv.cjcat.stardust.twoD.fields.BitmapField)
package idv.cjcat.stardust.twoD.fields {
import flash.display.*;
import idv.cjcat.stardust.common.xml.*;
import idv.cjcat.stardust.twoD.geom.*;
import idv.cjcat.stardust.twoD.particles.*;
import idv.cjcat.stardust.common.math.*;
public class BitmapField extends Field {
public var scaleX:Number;
public var scaleY:Number;
private var _bmpd:BitmapData;
public var max:Number;
public var tile:Boolean;
public var channelX:uint;
public var channelY:uint;
public var x:Number;
public var y:Number;
public function BitmapField(_arg1:Number=0, _arg2:Number=0, _arg3:Number=1, _arg4:uint=1, _arg5:uint=2){
this.x = _arg1;
this.y = _arg2;
this.max = _arg3;
this.channelX = _arg4;
this.channelY = _arg5;
this.scaleX = 1;
this.scaleY = 1;
this.tile = true;
update();
}
public function update(_arg1:BitmapData=null):void{
if (!_arg1){
_arg1 = new BitmapData(1, 1, false, 0x808080);
};
_bmpd = _arg1;
}
override protected function calculateMotionData2D(_arg1:Particle2D):MotionData2D{
var _local5:Number;
var _local6:Number;
var _local2:Number = (_arg1.x / scaleX);
var _local3:Number = (_arg1.y / scaleY);
if (tile){
_local2 = StardustMath.mod(_local2, _bmpd.width);
_local3 = StardustMath.mod(_local3, _bmpd.height);
} else {
if ((((((((_local2 < 0)) || ((_local2 >= _bmpd.width)))) || ((_local3 < 0)))) || ((_local3 >= _bmpd.height)))){
return (MotionData2DPool.get(0, 0));
};
};
var _local4:int = _bmpd.getPixel(int(_local2), int(_local3));
switch (channelX){
case BitmapDataChannel.RED:
_local5 = ((2 * ((((_local4 & 0xFF0000) >> 16) / 0xFF) - 0.5)) * max);
break;
case BitmapDataChannel.GREEN:
_local5 = ((2 * ((((_local4 & 0xFF00) >> 8) / 0xFF) - 0.5)) * max);
break;
case BitmapDataChannel.BLUE:
_local5 = ((2 * (((_local4 & 0xFF) / 0xFF) - 0.5)) * max);
break;
};
switch (channelY){
case BitmapDataChannel.RED:
_local6 = ((2 * ((((_local4 & 0xFF0000) >> 16) / 0xFF) - 0.5)) * max);
break;
case BitmapDataChannel.GREEN:
_local6 = ((2 * ((((_local4 & 0xFF00) >> 8) / 0xFF) - 0.5)) * max);
break;
case BitmapDataChannel.BLUE:
_local6 = ((2 * (((_local4 & 0xFF) / 0xFF) - 0.5)) * max);
break;
};
return (MotionData2DPool.get(_local5, _local6));
}
override public function getXMLTagName():String{
return ("BitmapField");
}
override public function parseXML(_arg1:XML, _arg2:XMLBuilder=null):void{
super.parseXML(_arg1, _arg2);
x = parseFloat(_arg1.@x);
y = parseFloat(_arg1.@y);
channelX = parseFloat(_arg1.@channelX);
channelY = parseFloat(_arg1.@channelY);
max = parseFloat(_arg1.@max);
scaleX = parseFloat(_arg1.@scaleX);
scaleY = parseFloat(_arg1.@scaleY);
}
override public function toXML():XML{
var _local1:XML = super.toXML();
_local1.@x = x;
_local1.@y = y;
_local1.@channelX = channelX;
_local1.@channelY = channelY;
_local1.@max = max;
_local1.@scaleX = scaleX;
_local1.@scaleY = scaleY;
return (_local1);
}
}
}//package idv.cjcat.stardust.twoD.fields
Section 200
//Field (idv.cjcat.stardust.twoD.fields.Field)
package idv.cjcat.stardust.twoD.fields {
import idv.cjcat.stardust.common.xml.*;
import idv.cjcat.stardust.common.*;
import idv.cjcat.stardust.twoD.geom.*;
import idv.cjcat.stardust.twoD.particles.*;
public class Field extends StardustElement {
public var active:Boolean;
public var massless:Boolean;
public function Field(){
active = true;
massless = true;
}
override public function getElementTypeXMLTag():XML{
return (<fields/>
);
}
override public function parseXML(_arg1:XML, _arg2:XMLBuilder=null):void{
super.parseXML(_arg1, _arg2);
active = (_arg1.@active == "action");
massless = (_arg1.@active == "massless");
}
final public function getMotionData2D(_arg1:Particle2D):MotionData2D{
var _local3:Number;
if (!active){
return (MotionData2DPool.get(0, 0));
};
var _local2:MotionData2D = calculateMotionData2D(_arg1);
if (!massless){
_local3 = (1 / _arg1.mass);
_local2.x = (_local2.x * _local3);
_local2.y = (_local2.y * _local3);
};
return (_local2);
}
override public function getXMLTagName():String{
return ("Field");
}
protected function calculateMotionData2D(_arg1:Particle2D):MotionData2D{
return (null);
}
override public function toXML():XML{
var _local1:XML = super.toXML();
_local1.@active = active;
_local1.@massless = massless;
return (_local1);
}
}
}//package idv.cjcat.stardust.twoD.fields
Section 201
//RadialField (idv.cjcat.stardust.twoD.fields.RadialField)
package idv.cjcat.stardust.twoD.fields {
import idv.cjcat.stardust.common.xml.*;
import idv.cjcat.stardust.twoD.geom.*;
import idv.cjcat.stardust.twoD.particles.*;
public class RadialField extends Field {
public var strength:Number;
public var epsilon:Number;
public var x:Number;
public var y:Number;
public var attenuationPower:Number;
public function RadialField(_arg1:Number=0, _arg2:Number=0, _arg3:Number=1, _arg4:Number=0, _arg5:Number=1){
this.x = _arg1;
this.y = _arg2;
this.strength = _arg3;
this.attenuationPower = _arg4;
this.epsilon = _arg5;
}
override public function getXMLTagName():String{
return ("RadialField");
}
override public function parseXML(_arg1:XML, _arg2:XMLBuilder=null):void{
super.parseXML(_arg1, _arg2);
x = parseFloat(_arg1.@x);
y = parseFloat(_arg1.@y);
strength = parseFloat(_arg1.@strength);
attenuationPower = parseFloat(_arg1.@attenuationPower);
epsilon = parseFloat(_arg1.@epsilon);
}
override public function toXML():XML{
var _local1:XML = super.toXML();
_local1.@x = x;
_local1.@y = y;
_local1.@strength = strength;
_local1.@attenuationPower = attenuationPower;
_local1.@epsilon = epsilon;
return (_local1);
}
override protected function calculateMotionData2D(_arg1:Particle2D):MotionData2D{
var _local2:Vec2D = Vec2DPool.get((_arg1.x - x), (_arg1.y - y));
var _local3:Number = _local2.length;
if (_local3 < epsilon){
_local3 = epsilon;
};
_local2.length = (strength * Math.pow(_local3, (-0.5 * attenuationPower)));
Vec2DPool.recycle(_local2);
return (MotionData2DPool.get(_local2.x, _local2.y));
}
}
}//package idv.cjcat.stardust.twoD.fields
Section 202
//UniformField (idv.cjcat.stardust.twoD.fields.UniformField)
package idv.cjcat.stardust.twoD.fields {
import idv.cjcat.stardust.common.xml.*;
import idv.cjcat.stardust.twoD.geom.*;
import idv.cjcat.stardust.twoD.particles.*;
public class UniformField extends Field {
public var x:Number;
public var y:Number;
public function UniformField(_arg1:Number=0, _arg2:Number=0){
this.x = _arg1;
this.y = _arg2;
}
override public function getXMLTagName():String{
return ("UniformField");
}
override public function parseXML(_arg1:XML, _arg2:XMLBuilder=null):void{
super.parseXML(_arg1, _arg2);
x = parseFloat(_arg1.@x);
y = parseFloat(_arg1.@y);
}
override public function toXML():XML{
var _local1:XML = super.toXML();
_local1.@x = x;
_local1.@y = y;
return (_local1);
}
override protected function calculateMotionData2D(_arg1:Particle2D):MotionData2D{
return (MotionData2DPool.get(x, y));
}
}
}//package idv.cjcat.stardust.twoD.fields
Section 203
//MotionData2D (idv.cjcat.stardust.twoD.geom.MotionData2D)
package idv.cjcat.stardust.twoD.geom {
public class MotionData2D {
public var x:Number;
public var y:Number;
public function MotionData2D(_arg1:Number=0, _arg2:Number=0){
this.x = _arg1;
this.y = _arg2;
}
}
}//package idv.cjcat.stardust.twoD.geom
Section 204
//MotionData2DPool (idv.cjcat.stardust.twoD.geom.MotionData2DPool)
package idv.cjcat.stardust.twoD.geom {
public class MotionData2DPool {
private static var _vec:Array = [new MotionData2D()];
private static var _position:int = 0;
public static function recycle(_arg1:MotionData2D):void{
if (_position == 0){
return;
};
if (!_arg1){
return;
};
_vec[(_position - 1)] = _arg1;
_position--;
if (_position < 0){
_position = 0;
};
if (_vec.length >= 16){
if (_position < (_vec.length >> 4)){
_vec.length = (_vec.length >> 1);
};
};
}
public static function get(_arg1:Number=0, _arg2:Number=0):MotionData2D{
var _local4:int;
if (_position == _vec.length){
_vec.length = (_vec.length << 1);
_local4 = _position;
while (_local4 < _vec.length) {
_vec[_local4] = new MotionData2D();
_local4++;
};
};
_position++;
var _local3:MotionData2D = (_vec[(_position - 1)] as MotionData2D);
_local3.x = _arg1;
_local3.y = _arg2;
return (_local3);
}
}
}//package idv.cjcat.stardust.twoD.geom
Section 205
//MotionData4D (idv.cjcat.stardust.twoD.geom.MotionData4D)
package idv.cjcat.stardust.twoD.geom {
public class MotionData4D {
public var vx:Number;
public var vy:Number;
public var x:Number;
public var y:Number;
public function MotionData4D(_arg1:Number=0, _arg2:Number=0, _arg3:Number=0, _arg4:Number=0){
this.x = _arg1;
this.y = _arg2;
this.vx = _arg3;
this.vy = _arg4;
}
}
}//package idv.cjcat.stardust.twoD.geom
Section 206
//MotionData4DPool (idv.cjcat.stardust.twoD.geom.MotionData4DPool)
package idv.cjcat.stardust.twoD.geom {
public class MotionData4DPool {
private static var _vec:Array = [new MotionData4D()];
private static var _position:int = 0;
public static function recycle(_arg1:MotionData4D):void{
if (_position == 0){
return;
};
if (!_arg1){
return;
};
_vec[(_position - 1)] = _arg1;
_position--;
if (_position < 0){
_position = 0;
};
if (_vec.length >= 16){
if (_position < (_vec.length >> 4)){
_vec.length = (_vec.length >> 1);
};
};
}
public static function get(_arg1:Number=0, _arg2:Number=0, _arg3:Number=0, _arg4:Number=0):MotionData4D{
var _local6:int;
if (_position == _vec.length){
_vec.length = (_vec.length << 1);
_local6 = _position;
while (_local6 < _vec.length) {
_vec[_local6] = new MotionData4D();
_local6++;
};
};
_position++;
var _local5:MotionData4D = (_vec[(_position - 1)] as MotionData4D);
_local5.x = _arg1;
_local5.y = _arg2;
_local5.vx = _arg3;
_local5.vy = _arg4;
return (_local5);
}
}
}//package idv.cjcat.stardust.twoD.geom
Section 207
//Vec2D (idv.cjcat.stardust.twoD.geom.Vec2D)
package idv.cjcat.stardust.twoD.geom {
import flash.events.*;
import idv.cjcat.stardust.common.math.*;
import idv.cjcat.stardust.twoD.events.*;
public class Vec2D extends EventDispatcher {
private var _x:Number;
private var _y:Number;
public function Vec2D(_arg1:Number=0, _arg2:Number=0){
_x = _arg1;
_y = _arg2;
}
public function project(_arg1:Vec2D):Vec2D{
var _local2:Vec2D = clone();
_local2.projectThis(_arg1);
return (_local2);
}
public function set y(_arg1:Number):void{
_y = _arg1;
dispatchEvent(new Vec2DEvent(Vec2DEvent.CHANGE, this));
}
public function set(_arg1:Number, _arg2:Number):void{
_x = _arg1;
_y = _arg2;
dispatchEvent(new Vec2DEvent(Vec2DEvent.CHANGE, this));
}
override public function toString():String{
return (((((("[Vec2D" + " x=") + _x) + " y=") + _y) + "]"));
}
public function get length():Number{
return (Math.sqrt(((_x * _x) + (_y * _y))));
}
public function dot(_arg1:Vec2D):Number{
return (((_x * _arg1._x) + (_y * _arg1._y)));
}
public function get angle():Number{
return ((Math.atan2(_y, _x) * StardustMath.RADIAN_TO_DEGREE));
}
public function set length(_arg1:Number):void{
if ((((_x == 0)) && ((_y == 0)))){
return;
};
var _local2:Number = (_arg1 / length);
_x = (_x * _local2);
_y = (_y * _local2);
dispatchEvent(new Vec2DEvent(Vec2DEvent.CHANGE, this));
}
public function set angle(_arg1:Number):void{
var _local2:Number = length;
var _local3:Number = (_arg1 * StardustMath.DEGREE_TO_RADIAN);
_x = (_local2 * Math.cos(_local3));
_y = (_local2 * Math.sin(_local3));
dispatchEvent(new Vec2DEvent(Vec2DEvent.CHANGE, this));
}
public function set x(_arg1:Number):void{
_x = _arg1;
dispatchEvent(new Vec2DEvent(Vec2DEvent.CHANGE, this));
}
public function rotateThis(_arg1:Number, _arg2:Boolean=false):void{
if (!_arg2){
_arg1 = (_arg1 * StardustMath.DEGREE_TO_RADIAN);
};
var _local3:Number = _x;
_x = ((_local3 * Math.cos(_arg1)) - (_y * Math.sin(_arg1)));
_y = ((_local3 * Math.sin(_arg1)) + (_y * Math.cos(_arg1)));
dispatchEvent(new Vec2DEvent(Vec2DEvent.CHANGE, this));
}
public function projectThis(_arg1:Vec2D):void{
var _local2:Vec2D = Vec2DPool.get(_arg1._x, _arg1._y);
_local2.length = 1;
_local2.length = dot(_local2);
_x = _local2._x;
_y = _local2._y;
Vec2DPool.recycle(_local2);
}
public function get x():Number{
return (_x);
}
public function get y():Number{
return (_y);
}
public function rotate(_arg1:Number, _arg2:Boolean=false):Vec2D{
var _local3:Vec2D = new Vec2D(_x, _y);
_local3.rotateThis(_arg1, _arg2);
return (_local3);
}
public function clone():Vec2D{
return (new Vec2D(_x, _y));
}
public function unitVec():Vec2D{
if (length == 0){
return (new Vec2D());
};
var _local1:Number = (1 / length);
return (new Vec2D((_x * _local1), (_y * _local1)));
}
}
}//package idv.cjcat.stardust.twoD.geom
Section 208
//Vec2DPool (idv.cjcat.stardust.twoD.geom.Vec2DPool)
package idv.cjcat.stardust.twoD.geom {
public class Vec2DPool {
private static var _vec:Array = [new Vec2D()];
private static var _position:int = 0;
public static function recycle(_arg1:Vec2D):void{
if (_position == 0){
return;
};
if (!_arg1){
return;
};
_vec[(_position - 1)] = _arg1;
_position--;
if (_position < 0){
_position = 0;
};
if (_vec.length >= 16){
if (_position < (_vec.length >> 4)){
_vec.length = (_vec.length >> 1);
};
};
}
public static function get(_arg1:Number=0, _arg2:Number=0):Vec2D{
var _local4:int;
if (_position == _vec.length){
_vec.length = (_vec.length << 1);
_local4 = _position;
while (_local4 < _vec.length) {
_vec[_local4] = new Vec2D();
_local4++;
};
};
_position++;
var _local3:Vec2D = (_vec[(_position - 1)] as Vec2D);
_local3.x = _arg1;
_local3.y = _arg2;
return (_local3);
}
}
}//package idv.cjcat.stardust.twoD.geom
Section 209
//DisplayObjectClass (idv.cjcat.stardust.twoD.initializers.DisplayObjectClass)
package idv.cjcat.stardust.twoD.initializers {
import idv.cjcat.stardust.common.particles.*;
import idv.cjcat.stardust.common.utils.*;
public class DisplayObjectClass extends Initializer2D {
public var constructorParams:Array;
public var displayObjectClass:Class;
public function DisplayObjectClass(_arg1:Class=null, _arg2:Array=null){
this.displayObjectClass = _arg1;
this.constructorParams = _arg2;
}
override public function getXMLTagName():String{
return ("DisplayObjectClass");
}
override public function initialize(_arg1:Particle):void{
if (!displayObjectClass){
return;
};
_arg1.target = construct(displayObjectClass, constructorParams);
}
}
}//package idv.cjcat.stardust.twoD.initializers
Section 210
//DisplayObjectParent (idv.cjcat.stardust.twoD.initializers.DisplayObjectParent)
package idv.cjcat.stardust.twoD.initializers {
import flash.display.*;
import idv.cjcat.stardust.common.particles.*;
import idv.cjcat.stardust.twoD.particles.*;
public class DisplayObjectParent extends Initializer2D {
public var container:DisplayObjectContainer;
public function DisplayObjectParent(_arg1:DisplayObjectContainer=null){
priority = -100;
this.container = _arg1;
}
override public function initialize(_arg1:Particle):void{
if (!container){
return;
};
var _local2:Particle2D = (_arg1 as Particle2D);
var _local3:DisplayObject = (_local2.target as DisplayObject);
if (!_local3){
return;
};
container.addChild(_local3);
}
override public function getXMLTagName():String{
return ("DisplayObjectParent");
}
}
}//package idv.cjcat.stardust.twoD.initializers
Section 211
//Initializer2D (idv.cjcat.stardust.twoD.initializers.Initializer2D)
package idv.cjcat.stardust.twoD.initializers {
import idv.cjcat.stardust.common.initializers.*;
public class Initializer2D extends Initializer {
public function Initializer2D(){
_supports3D = false;
priority = Initializer2DPriority.getInstance().getPriority((Object(this).constructor as Class));
}
}
}//package idv.cjcat.stardust.twoD.initializers
Section 212
//Initializer2DPriority (idv.cjcat.stardust.twoD.initializers.Initializer2DPriority)
package idv.cjcat.stardust.twoD.initializers {
import idv.cjcat.stardust.common.initializers.*;
public class Initializer2DPriority extends InitializerPriority {
private static var _instance:Initializer2DPriority;
final override protected function populatePriorities():void{
priorities[DisplayObjectClass] = 1;
priorities[DisplayObjectParent] = 1;
}
public static function getInstance():Initializer2DPriority{
if (!_instance){
_instance = new (Initializer2DPriority);
};
return (_instance);
}
}
}//package idv.cjcat.stardust.twoD.initializers
Section 213
//LazyInitializer (idv.cjcat.stardust.twoD.initializers.LazyInitializer)
package idv.cjcat.stardust.twoD.initializers {
import idv.cjcat.stardust.common.initializers.*;
import idv.cjcat.stardust.common.xml.*;
import flash.utils.*;
import idv.cjcat.stardust.twoD.geom.*;
import idv.cjcat.stardust.common.math.*;
import idv.cjcat.stardust.twoD.zones.*;
import idv.cjcat.stardust.*;
public class LazyInitializer extends CompositeInitializer {
private var _massInit:Mass;
private var _lifeInit:Life;
private var _rotationInit:Rotation;
private var _alphaInit:Alpha;
private var _inScaleit:Scale;
private var _omegaInit:Omega;
private var additionalInitializers:InitializerCollection;
private var _displayObjectClassParams:Array;
private var _displayObjectClassInit:DisplayObjectClass;
private var _posInit:Position;
private var _massInitRand:UniformRandom;
private var _lifeInitRand:UniformRandom;
private var _rotationInitRand:UniformRandom;
private var _alphaInitRand:UniformRandom;
private var _collisionRadiusInit:CollisionRadius;
private var _inScaleitRand:UniformRandom;
private var _omegaInitRand:UniformRandom;
private var _velocityInit:Velocity;
private var _velocityInitSector:LazySectorZone;
private var _maskInit:Mask;
public function LazyInitializer(_arg1:Class=null, _arg2:Zone=null){
additionalInitializers = new InitializerCollection();
super();
if (!_arg2){
_arg2 = new SinglePoint();
};
_displayObjectClassInit = new DisplayObjectClass(_arg1);
_posInit = new Position(_arg2);
_rotationInitRand = new UniformRandom(0, 180);
_rotationInit = new Rotation(_rotationInitRand);
_lifeInitRand = new UniformRandom(50, 0);
_lifeInit = new Life(_lifeInitRand);
_velocityInitSector = new LazySectorZone(3, 0);
_velocityInitSector.direction.set(0, -1);
_velocityInit = new Velocity(_velocityInitSector);
_omegaInitRand = new UniformRandom(0, 0);
_omegaInit = new Omega(_omegaInitRand);
_inScaleitRand = new UniformRandom(1, 0);
_inScaleit = new Scale(_inScaleitRand);
_massInitRand = new UniformRandom(1, 0);
_massInit = new Mass(_massInitRand);
_maskInit = new Mask(1);
_collisionRadiusInit = new CollisionRadius(0);
_alphaInitRand = new UniformRandom(1, 0);
_alphaInit = new Alpha(_alphaInitRand);
superAddInitializer(_displayObjectClassInit);
superAddInitializer(_posInit);
superAddInitializer(_rotationInit);
superAddInitializer(_lifeInit);
superAddInitializer(_velocityInit);
superAddInitializer(_omegaInit);
superAddInitializer(_inScaleit);
superAddInitializer(_massInit);
superAddInitializer(_maskInit);
superAddInitializer(_collisionRadiusInit);
superAddInitializer(_alphaInit);
}
public function set scaleVar(_arg1:Number):void{
_inScaleitRand.radius = _arg1;
}
override public function addInitializer(_arg1:Initializer):void{
super.addInitializer(_arg1);
additionalInitializers.addInitializer(_arg1);
}
public function set omegaVar(_arg1:Number):void{
_omegaInitRand.radius = _arg1;
}
public function set speed(_arg1:Number):void{
_velocityInitSector.radius = _arg1;
}
public function get massVar():Number{
return (_massInitRand.radius);
}
public function set rotation(_arg1:Number):void{
_rotationInitRand.center = _arg1;
}
public function get omegaVar():Number{
return (_omegaInitRand.radius);
}
public function set rotationVar(_arg1:Number):void{
_rotationInitRand.radius = _arg1;
}
public function set scale(_arg1:Number):void{
_inScaleitRand.center = _arg1;
}
public function set lifeVar(_arg1:Number):void{
_lifeInitRand.radius = _arg1;
}
override public function parseXML(_arg1:XML, _arg2:XMLBuilder=null):void{
var _local3:XML;
name = _arg1.@name;
active = (_arg1.@active == "true");
displayObjectClass = (getDefinitionByName(_arg1.@displayObjectClass) as Class);
position = (_arg2.getElementByName(_arg1.@position) as Zone);
rotation = parseFloat(_arg1.@rotation);
rotationVar = parseFloat(_arg1.@rotationVar);
life = parseFloat(_arg1.@life);
lifeVar = parseFloat(_arg1.@lifeVar);
direction.x = parseFloat(_arg1.@directionX);
direction.y = parseFloat(_arg1.@directionY);
omega = parseFloat(_arg1.@omega);
omegaVar = parseFloat(_arg1.@omegaVar);
scale = parseFloat(_arg1.@scale);
scaleVar = parseFloat(_arg1.@scaleVar);
mask = parseInt(_arg1.@mask);
mass = parseFloat(_arg1.@mass);
collisionRadius = parseFloat(_arg1.@collisionRadius);
alpha = parseFloat(_arg1.@alpha);
alphaVar = parseFloat(_arg1.@alphaVar);
additionalInitializers.clearInitializers();
for each (_local3 in _arg1.initializers.*) {
addInitializer((_arg2.getElementByName(_local3.@name) as Initializer));
};
}
public function get lifeVar():Number{
return (_lifeInitRand.radius);
}
public function get position():Zone{
return (_posInit.zone);
}
public function set massVar(_arg1:Number):void{
_massInitRand.radius = _arg1;
}
public function get directionVar():Number{
return (_velocityInitSector.directionVar);
}
override public function toXML():XML{
var _local2:Initializer;
var _local1:XML = super.toXML();
delete _local1.initializers;
_local1.@displayObjectClass = getQualifiedClassName(displayObjectClass);
_local1.@position = position.name;
_local1.@rotation = rotation;
_local1.@rotationVar = rotationVar;
_local1.@life = life;
_local1.@lifeVar = lifeVar;
_local1.@speed = speedVar;
_local1.@speedVar = speedVar;
_local1.@directionX = direction.x;
_local1.@directionY = direction.y;
_local1.@omega = omega;
_local1.@omegaVar = omegaVar;
_local1.@scale = scale;
_local1.@scaleVar = scaleVar;
_local1.@mass = mass;
_local1.@mask = mask;
_local1.@collisionRadius = collisionRadius;
_local1.@alpha = alpha;
_local1.@alphaVar = alphaVar;
if (additionalInitializers.sd::initializers.length > 0){
_local1.appendChild(<initializers/>
);
for each (_local2 in additionalInitializers.sd::initializers) {
_local1.initializers.appendChild(_local2.getXMLTag());
};
};
return (_local1);
}
public function set displayObjectClass(_arg1:Class):void{
_displayObjectClassInit.displayObjectClass = _arg1;
}
public function set alpha(_arg1:Number):void{
_alphaInitRand.center = _arg1;
}
public function get displayObjectClassParams():Array{
return (_displayObjectClassInit.constructorParams);
}
override public function removeInitializer(_arg1:Initializer):void{
super.removeInitializer(_arg1);
additionalInitializers.removeInitializer(_arg1);
}
public function set speedVar(_arg1:Number):void{
_velocityInitSector.radiusVar = _arg1;
}
public function set omega(_arg1:Number):void{
_omegaInitRand.center = _arg1;
}
override public function getXMLTagName():String{
return ("LazyInitializer");
}
public function get speed():Number{
return (_velocityInitSector.radius);
}
public function get rotationVar():Number{
return (_rotationInitRand.radius);
}
public function get scale():Number{
return (_inScaleitRand.center);
}
public function set collisionRadius(_arg1:Number):void{
_collisionRadiusInit.radius = _arg1;
}
public function set position(_arg1:Zone):void{
_posInit.zone = _arg1;
}
protected function superAddInitializer(_arg1:Initializer):void{
super.addInitializer(_arg1);
}
public function get displayObjectClass():Class{
return (_displayObjectClassInit.displayObjectClass);
}
public function set directionVar(_arg1:Number):void{
_velocityInitSector.directionVar = _arg1;
}
public function get speedVar():Number{
return (_velocityInitSector.radiusVar);
}
public function get omega():Number{
return (_omegaInitRand.center);
}
public function get alpha():Number{
return (_alphaInitRand.center);
}
override public function getRelatedObjects():Array{
return ([position].concat(additionalInitializers.sd::initializers));
}
public function set mask(_arg1:int):void{
_maskInit.mask = _arg1;
}
public function set mass(_arg1:Number):void{
_massInitRand.center = _arg1;
}
public function get alphaVar():Number{
return (_alphaInitRand.radius);
}
public function set alphaVar(_arg1:Number):void{
_alphaInitRand.radius = _arg1;
}
public function get collisionRadius():Number{
return (_collisionRadiusInit.radius);
}
public function get mask():int{
return (_maskInit.mask);
}
public function get mass():Number{
return (_massInitRand.center);
}
override public function clearInitializers():void{
super.clearInitializers();
additionalInitializers.clearInitializers();
}
public function set life(_arg1:Number):void{
_lifeInitRand.center = _arg1;
}
public function set displayObjectClassParams(_arg1:Array):void{
_displayObjectClassInit.constructorParams = _arg1;
}
public function get life():Number{
return (_lifeInitRand.center);
}
public function get scaleVar():Number{
return (_inScaleitRand.radius);
}
public function get rotation():Number{
return (_rotationInitRand.center);
}
public function get direction():Vec2D{
return (_velocityInitSector.direction);
}
}
}//package idv.cjcat.stardust.twoD.initializers
Section 214
//Omega (idv.cjcat.stardust.twoD.initializers.Omega)
package idv.cjcat.stardust.twoD.initializers {
import idv.cjcat.stardust.common.xml.*;
import idv.cjcat.stardust.common.particles.*;
import idv.cjcat.stardust.twoD.particles.*;
import idv.cjcat.stardust.common.math.*;
public class Omega extends Initializer2D {
private var _random:Random;
public function Omega(_arg1:Random=null){
this.random = _arg1;
}
override public function initialize(_arg1:Particle):void{
var _local2:Particle2D = (_arg1 as Particle2D);
_local2.omega = _random.random();
}
override public function parseXML(_arg1:XML, _arg2:XMLBuilder=null):void{
super.parseXML(_arg1, _arg2);
random = (_arg2.getElementByName(_arg1.@random) as Random);
}
public function set random(_arg1:Random):void{
if (!_arg1){
_arg1 = new UniformRandom(0, 0);
};
_random = _arg1;
}
public function get random():Random{
return (_random);
}
override public function getXMLTagName():String{
return ("Omega");
}
override public function toXML():XML{
var _local1:XML = super.toXML();
_local1.@random = _random.name;
return (_local1);
}
override public function getRelatedObjects():Array{
return ([_random]);
}
}
}//package idv.cjcat.stardust.twoD.initializers
Section 215
//Position (idv.cjcat.stardust.twoD.initializers.Position)
package idv.cjcat.stardust.twoD.initializers {
import idv.cjcat.stardust.common.xml.*;
import idv.cjcat.stardust.common.particles.*;
import idv.cjcat.stardust.twoD.geom.*;
import idv.cjcat.stardust.twoD.particles.*;
import idv.cjcat.stardust.twoD.zones.*;
public class Position extends Initializer2D {
private var _zone:Zone;
public function Position(_arg1:Zone=null){
this.zone = _arg1;
}
override public function initialize(_arg1:Particle):void{
var _local2:Particle2D = (_arg1 as Particle2D);
var _local3:MotionData2D = zone.getPoint();
_local2.x = _local3.x;
_local2.y = _local3.y;
MotionData2DPool.recycle(_local3);
}
override public function parseXML(_arg1:XML, _arg2:XMLBuilder=null):void{
super.parseXML(_arg1, _arg2);
zone = (_arg2.getElementByName(_arg1.@zone) as Zone);
}
override public function getXMLTagName():String{
return ("Position");
}
public function set zone(_arg1:Zone):void{
if (!_arg1){
_arg1 = new SinglePoint(0, 0);
};
_zone = _arg1;
}
public function get zone():Zone{
return (_zone);
}
override public function toXML():XML{
var _local1:XML = super.toXML();
_local1.@zone = zone.name;
return (_local1);
}
override public function getRelatedObjects():Array{
return ([_zone]);
}
}
}//package idv.cjcat.stardust.twoD.initializers
Section 216
//Rotation (idv.cjcat.stardust.twoD.initializers.Rotation)
package idv.cjcat.stardust.twoD.initializers {
import idv.cjcat.stardust.common.xml.*;
import idv.cjcat.stardust.common.particles.*;
import idv.cjcat.stardust.twoD.particles.*;
import idv.cjcat.stardust.common.math.*;
public class Rotation extends Initializer2D {
private var _random:Random;
public function Rotation(_arg1:Random=null){
this.random = _arg1;
}
override public function initialize(_arg1:Particle):void{
var _local2:Particle2D = (_arg1 as Particle2D);
_local2.rotation = random.random();
}
override public function parseXML(_arg1:XML, _arg2:XMLBuilder=null):void{
super.parseXML(_arg1, _arg2);
random = (_arg2.getElementByName(_arg1.@random) as Random);
}
public function set random(_arg1:Random):void{
if (!_arg1){
_arg1 = new UniformRandom(0, 0);
};
_random = _arg1;
}
public function get random():Random{
return (_random);
}
override public function getXMLTagName():String{
return ("Rotation");
}
override public function toXML():XML{
var _local1:XML = super.toXML();
_local1.@random = _random.name;
return (_local1);
}
override public function getRelatedObjects():Array{
return ([_random]);
}
}
}//package idv.cjcat.stardust.twoD.initializers
Section 217
//Velocity (idv.cjcat.stardust.twoD.initializers.Velocity)
package idv.cjcat.stardust.twoD.initializers {
import idv.cjcat.stardust.common.xml.*;
import idv.cjcat.stardust.common.particles.*;
import idv.cjcat.stardust.twoD.geom.*;
import idv.cjcat.stardust.twoD.particles.*;
import idv.cjcat.stardust.twoD.zones.*;
public class Velocity extends Initializer2D {
private var _zone:Zone;
public function Velocity(_arg1:Zone=null){
this.zone = _arg1;
}
override public function initialize(_arg1:Particle):void{
var _local3:MotionData2D;
var _local2:Particle2D = (_arg1 as Particle2D);
_local3 = zone.getPoint();
_local2.vx = _local3.x;
_local2.vy = _local3.y;
MotionData2DPool.recycle(_local3);
}
override public function parseXML(_arg1:XML, _arg2:XMLBuilder=null):void{
super.parseXML(_arg1, _arg2);
zone = (_arg2.getElementByName(_arg1.@zone) as Zone);
}
override public function getXMLTagName():String{
return ("Velocity");
}
public function set zone(_arg1:Zone):void{
if (!_arg1){
_arg1 = new SinglePoint(0, 0);
};
_zone = _arg1;
}
public function get zone():Zone{
return (_zone);
}
override public function toXML():XML{
var _local1:XML = super.toXML();
_local1.@zone = zone.name;
return (_local1);
}
override public function getRelatedObjects():Array{
return ([_zone]);
}
}
}//package idv.cjcat.stardust.twoD.initializers
Section 218
//Particle2D (idv.cjcat.stardust.twoD.particles.Particle2D)
package idv.cjcat.stardust.twoD.particles {
import idv.cjcat.stardust.common.particles.*;
public class Particle2D extends Particle {
public var omega:Number;
public var vx:Number;
public var vy:Number;
public var x:Number;
public var y:Number;
public var rotation:Number;
override public function init():void{
super.init();
x = 0;
y = 0;
vx = 0;
vy = 0;
rotation = 0;
omega = 0;
}
}
}//package idv.cjcat.stardust.twoD.particles
Section 219
//Particle2DFactory (idv.cjcat.stardust.twoD.particles.Particle2DFactory)
package idv.cjcat.stardust.twoD.particles {
import idv.cjcat.stardust.common.initializers.*;
import flash.utils.*;
import idv.cjcat.stardust.common.particles.*;
import flash.errors.*;
public class Particle2DFactory extends ParticleFactory {
public function Particle2DFactory(){
particlePool = Particle2DPool.getInstance();
}
override public function addInitializer(_arg1:Initializer):void{
if (!_arg1.supports2D){
throw (new IllegalOperationError(("This initializer does not support 2D: " + getQualifiedClassName((Object(_arg1).constructor as Class)))));
};
super.addInitializer(_arg1);
}
}
}//package idv.cjcat.stardust.twoD.particles
Section 220
//Particle2DPool (idv.cjcat.stardust.twoD.particles.Particle2DPool)
package idv.cjcat.stardust.twoD.particles {
import idv.cjcat.stardust.common.particles.*;
public class Particle2DPool extends ParticlePool {
private static var _instance:Particle2DPool;
public function Particle2DPool(_arg1:Class){
super(_arg1);
}
public static function getInstance():Particle2DPool{
if (!_instance){
_instance = new Particle2DPool(Particle2D);
};
return (_instance);
}
}
}//package idv.cjcat.stardust.twoD.particles
Section 221
//Particle2DXSorter (idv.cjcat.stardust.twoD.particles.Particle2DXSorter)
package idv.cjcat.stardust.twoD.particles {
import idv.cjcat.stardust.common.particles.*;
public class Particle2DXSorter extends ParticleSorter {
private static var _instance:Particle2DXSorter;
override public function sort(_arg1:Array):void{
_arg1.sortOn("x", Array.NUMERIC);
}
public static function getInstance():Particle2DXSorter{
if (!_instance){
_instance = new (Particle2DXSorter);
};
return (_instance);
}
}
}//package idv.cjcat.stardust.twoD.particles
Section 222
//BitmapRenderer (idv.cjcat.stardust.twoD.renderers.BitmapRenderer)
package idv.cjcat.stardust.twoD.renderers {
import flash.display.*;
import idv.cjcat.stardust.common.xml.*;
import idv.cjcat.stardust.twoD.particles.*;
import flash.geom.*;
import idv.cjcat.stardust.common.events.*;
import idv.cjcat.stardust.common.math.*;
import idv.cjcat.stardust.common.renderers.*;
public class BitmapRenderer extends Renderer {
public var targetBitmapData:BitmapData;
public var blendMode:String;
public function BitmapRenderer(_arg1:BitmapData=null, _arg2:String="normal"){
this.targetBitmapData = _arg1;
this.blendMode = _arg2;
}
final override protected function particlesCreated(_arg1:EmitterEvent):void{
}
override public function toXML():XML{
var _local1:XML = super.toXML();
_local1.@blendMode = blendMode;
return (_local1);
}
override public function parseXML(_arg1:XML, _arg2:XMLBuilder=null):void{
super.parseXML(_arg1, _arg2);
blendMode = _arg1.@blendMode;
}
override public function getXMLTagName():String{
return ("BitmapRenderer");
}
final override protected function render(_arg1:EmitterEvent):void{
var _local2:Particle2D;
var _local3:DisplayObject;
var _local4:Matrix;
if (!targetBitmapData){
return;
};
targetBitmapData.lock();
for each (_local2 in _arg1.particles) {
_local3 = (_local2.target as DisplayObject);
if (!_local3){
} else {
_local4 = new Matrix();
_local4.scale(_local2.scale, _local2.scale);
_local4.rotate((_local2.rotation * StardustMath.DEGREE_TO_RADIAN));
_local4.translate(_local2.x, _local2.y);
targetBitmapData.draw(_local3, _local4, new ColorTransform(1, 1, 1, _local2.alpha), blendMode);
};
};
targetBitmapData.unlock();
}
final override protected function particlesRemoved(_arg1:EmitterEvent):void{
}
}
}//package idv.cjcat.stardust.twoD.renderers
Section 223
//DisplayObjectRenderer (idv.cjcat.stardust.twoD.renderers.DisplayObjectRenderer)
package idv.cjcat.stardust.twoD.renderers {
import flash.display.*;
import idv.cjcat.stardust.common.xml.*;
import idv.cjcat.stardust.twoD.particles.*;
import idv.cjcat.stardust.common.events.*;
import idv.cjcat.stardust.twoD.display.*;
import idv.cjcat.stardust.common.renderers.*;
public class DisplayObjectRenderer extends Renderer {
public var container:DisplayObjectContainer;
public var forceParentChange:Boolean;
public var addChildMode:int;
public function DisplayObjectRenderer(_arg1:DisplayObjectContainer=null, _arg2:int=0){
this.container = _arg1;
this.addChildMode = _arg2;
forceParentChange = false;
}
override public function getXMLTagName():String{
return ("DisplayObjectRenderer");
}
override public function parseXML(_arg1:XML, _arg2:XMLBuilder=null):void{
super.parseXML(_arg1, _arg2);
addChildMode = parseInt(_arg1.@addChildMode);
forceParentChange = (_arg1.@forceParentChange == "true");
}
final override protected function particlesRemoved(_arg1:EmitterEvent):void{
var _local2:Particle2D;
var _local3:DisplayObject;
for each (_local2 in _arg1.particles) {
_local3 = (_local2.target as DisplayObject);
if (!_local3){
} else {
DisplayObjectContainer(_local3.parent).removeChild(_local3);
};
};
}
final override protected function render(_arg1:EmitterEvent):void{
var _local2:Particle2D;
var _local3:DisplayObject;
for each (_local2 in _arg1.particles) {
_local3 = (_local2.target as DisplayObject);
if (!_local3){
} else {
_local3.x = _local2.x;
_local3.y = _local2.y;
_local3.rotation = _local2.rotation;
_local3.scaleX = (_local3.scaleY = _local2.scale);
_local3.alpha = _local2.alpha;
};
};
}
final override protected function particlesCreated(_arg1:EmitterEvent):void{
var _local2:Particle2D;
var _local3:DisplayObject;
if (!container){
return;
};
for each (_local2 in _arg1.particles) {
_local3 = (_local2.target as DisplayObject);
if (!_local3){
} else {
if (!forceParentChange){
//unresolved if
} else {
switch (addChildMode){
case AddChildMode.TOP:
container.addChild(_local3);
break;
case AddChildMode.BOTTOM:
container.addChildAt(_local3, 0);
break;
default:
container.addChildAt(_local3, Math.floor((Math.random() * container.numChildren)));
break;
};
};
};
};
}
override public function toXML():XML{
var _local1:XML = super.toXML();
_local1.@addChildMode = addChildMode;
_local1.@forceParentChange = forceParentChange;
return (_local1);
}
}
}//package idv.cjcat.stardust.twoD.renderers
Section 224
//PixelRenderer (idv.cjcat.stardust.twoD.renderers.PixelRenderer)
package idv.cjcat.stardust.twoD.renderers {
import flash.display.*;
import idv.cjcat.stardust.twoD.particles.*;
import idv.cjcat.stardust.common.events.*;
import idv.cjcat.stardust.common.renderers.*;
public class PixelRenderer extends Renderer {
public var targetBitmapData:BitmapData;
public function PixelRenderer(_arg1:BitmapData=null){
this.targetBitmapData = _arg1;
}
final override protected function particlesRemoved(_arg1:EmitterEvent):void{
}
final override protected function render(_arg1:EmitterEvent):void{
var _local2:Particle2D;
var _local3:int;
var _local4:int;
var _local5:uint;
if (!targetBitmapData){
return;
};
targetBitmapData.lock();
for each (_local2 in _arg1.particles) {
_local3 = int((_local2.x + 0.5));
if ((((_local3 < 0)) || ((_local3 >= targetBitmapData.width)))){
} else {
_local4 = int((_local2.y + 0.5));
if ((((_local4 < 0)) || ((_local4 >= targetBitmapData.height)))){
} else {
_local5 = ((_local2.color & 0xFFFFFF) | uint((uint((_local2.alpha * 0xFF)) << 24)));
targetBitmapData.setPixel32(_local3, _local4, _local5);
};
};
};
targetBitmapData.unlock();
}
final override protected function particlesCreated(_arg1:EmitterEvent):void{
}
override public function getXMLTagName():String{
return ("PixelRenderer");
}
}
}//package idv.cjcat.stardust.twoD.renderers
Section 225
//SingularBitmapRenderer (idv.cjcat.stardust.twoD.renderers.SingularBitmapRenderer)
package idv.cjcat.stardust.twoD.renderers {
import flash.display.*;
import idv.cjcat.stardust.common.xml.*;
import idv.cjcat.stardust.twoD.particles.*;
import flash.geom.*;
import idv.cjcat.stardust.common.events.*;
import idv.cjcat.stardust.common.math.*;
import idv.cjcat.stardust.common.renderers.*;
public class SingularBitmapRenderer extends Renderer {
public var displayObject:DisplayObject;
public var targetBitmapData:BitmapData;
public var blendMode:String;
public function SingularBitmapRenderer(_arg1:DisplayObject=null, _arg2:BitmapData=null, _arg3:String="normal"){
this.displayObject = _arg1;
this.targetBitmapData = _arg2;
this.blendMode = _arg3;
}
override public function getXMLTagName():String{
return ("SingularBitmapRenderer");
}
override public function parseXML(_arg1:XML, _arg2:XMLBuilder=null):void{
super.parseXML(_arg1, _arg2);
blendMode = _arg1.@blendMode;
}
final override protected function render(_arg1:EmitterEvent):void{
var _local2:Particle2D;
var _local3:Matrix;
if (!displayObject){
return;
};
if (!targetBitmapData){
return;
};
targetBitmapData.lock();
for each (_local2 in _arg1.particles) {
_local3 = new Matrix();
_local3.scale(_local2.scale, _local2.scale);
_local3.rotate((_local2.rotation * StardustMath.DEGREE_TO_RADIAN));
_local3.translate(_local2.x, _local2.y);
targetBitmapData.draw(displayObject, _local3, new ColorTransform(1, 1, 1, _local2.alpha), blendMode);
};
targetBitmapData.unlock();
}
final override protected function particlesRemoved(_arg1:EmitterEvent):void{
}
override public function toXML():XML{
var _local1:XML = super.toXML();
_local1.@blendMode = blendMode;
return (_local1);
}
final override protected function particlesCreated(_arg1:EmitterEvent):void{
}
}
}//package idv.cjcat.stardust.twoD.renderers
Section 226
//BitmapZone (idv.cjcat.stardust.twoD.zones.BitmapZone)
package idv.cjcat.stardust.twoD.zones {
import flash.display.*;
import idv.cjcat.stardust.common.xml.*;
import flash.utils.*;
import idv.cjcat.stardust.twoD.geom.*;
public class BitmapZone extends Zone {
public var scaleY:Number;
public var scaleX:Number;
private var xCoords:Array;
private var yCoords:Array;
public var x:Number;
public var y:Number;
private var coordLength:int;
public function BitmapZone(_arg1:BitmapData=null, _arg2:Number=0, _arg3:Number=0, _arg4:Number=1, _arg5:Number=1){
this.x = _arg2;
this.y = _arg3;
this.scaleX = _arg4;
this.scaleY = _arg5;
xCoords = [];
yCoords = [];
update(_arg1);
}
override public function toXML():XML{
var _local1:XML = super.toXML();
_local1.@x = x;
_local1.@y = y;
_local1.@scaleX = scaleX;
_local1.@scaleY = scaleY;
return (_local1);
}
override public function getXMLTagName():String{
return ("BitmapZone");
}
override public function parseXML(_arg1:XML, _arg2:XMLBuilder=null):void{
super.parseXML(_arg1, _arg2);
x = parseFloat(_arg1.@x);
y = parseFloat(_arg1.@y);
scaleX = parseFloat(_arg1.@scaleX);
scaleY = parseFloat(_arg1.@scaleY);
}
public function update(_arg1:BitmapData=null):void{
if (!_arg1){
_arg1 = new BitmapData(1, 1, true, 4286611584);
};
var _local2:ByteArray = _arg1.getPixels(_arg1.rect);
var _local3 = (_local2.length >> 2);
xCoords.length = (yCoords.length = _local3);
var _local4:int;
var _local5:int;
coordLength = 0;
var _local6:int;
while (_local6 < _local3) {
if (_local2[(_local6 * 4)] > 0){
xCoords[coordLength] = _local4;
yCoords[coordLength] = _local5;
coordLength++;
};
_local4++;
if (_local4 == _arg1.width){
_local4 = 0;
_local5++;
};
_local6++;
};
}
override public function calculateMotionData2D():MotionData2D{
if (xCoords.length == 0){
return (MotionData2DPool.get(x, y));
};
var _local1:int = int((coordLength * Math.random()));
return (MotionData2DPool.get(((xCoords[_local1] * scaleX) + x), ((yCoords[_local1] * scaleY) + y)));
}
}
}//package idv.cjcat.stardust.twoD.zones
Section 227
//CircleContour (idv.cjcat.stardust.twoD.zones.CircleContour)
package idv.cjcat.stardust.twoD.zones {
import idv.cjcat.stardust.common.xml.*;
import idv.cjcat.stardust.twoD.geom.*;
import idv.cjcat.stardust.common.math.*;
public class CircleContour extends Contour {
private var _radiusSQ:Number;
private var _area:Number;
private var _radius:Number;
public var x:Number;
public var y:Number;
private var _r1SQ:Number;
private var _r2SQ:Number;
public function CircleContour(_arg1:Number=0, _arg2:Number=0, _arg3:Number=100){
this.x = _arg1;
this.y = _arg2;
this.radius = _arg3;
}
public function get radius():Number{
return (_radius);
}
override public function calculateMotionData2D():MotionData2D{
var _local1:Number = (StardustMath.TWO_PI * Math.random());
return (new MotionData2D(((_radius * Math.cos(_local1)) + x), ((_radius * Math.sin(_local1)) + y)));
}
override public function toXML():XML{
var _local1:XML = super.toXML();
_local1.@x = x;
_local1.@y = y;
_local1.@radius = radius;
return (_local1);
}
override public function contains(_arg1:Number, _arg2:Number):Boolean{
var _local3:Number = (this.x - _arg1);
var _local4:Number = (this.y - _arg2);
var _local5:Number = ((_local3 * _local3) + (_local4 * _local4));
if ((((_local5 > _r1SQ)) || ((_local5 < _r2SQ)))){
return (false);
};
return (true);
}
public function set radius(_arg1:Number):void{
_radius = _arg1;
_radiusSQ = (_arg1 * _arg1);
var _local2:Number = (_arg1 + (0.5 * virtualThickness));
var _local3:Number = (_arg1 - (0.5 * virtualThickness));
_r1SQ = (_local2 * _local2);
_r2SQ = (_local3 * _local3);
updateArea();
}
override public function getRelatedObjects():Array{
return ([]);
}
override public function parseXML(_arg1:XML, _arg2:XMLBuilder=null):void{
super.parseXML(_arg1, _arg2);
x = parseFloat(_arg1.@x);
y = parseFloat(_arg1.@y);
radius = parseFloat(_arg1.@radius);
}
override public function getXMLTagName():String{
return ("CircleContour");
}
override protected function updateArea():void{
area = (((_r1SQ - _r2SQ) * Math.PI) * virtualThickness);
}
}
}//package idv.cjcat.stardust.twoD.zones
Section 228
//CircleZone (idv.cjcat.stardust.twoD.zones.CircleZone)
package idv.cjcat.stardust.twoD.zones {
import idv.cjcat.stardust.common.xml.*;
import idv.cjcat.stardust.twoD.geom.*;
import idv.cjcat.stardust.common.math.*;
public class CircleZone extends Zone {
public var y:Number;
private var _radiusSQ:Number;
private var _radius:Number;
public var x:Number;
public function CircleZone(_arg1:Number=0, _arg2:Number=0, _arg3:Number=100){
this.x = _arg1;
this.y = _arg2;
this.radius = _arg3;
}
public function set radius(_arg1:Number):void{
_radius = _arg1;
_radiusSQ = (_arg1 * _arg1);
updateArea();
}
override public function contains(_arg1:Number, _arg2:Number):Boolean{
var _local3:Number = (this.x - _arg1);
var _local4:Number = (this.y - _arg2);
return (((((_local3 * _local3) + (_local4 * _local4)))<=_radiusSQ) ? true : false);
}
override public function getXMLTagName():String{
return ("CircleZone");
}
override public function getRelatedObjects():Array{
return ([]);
}
override protected function updateArea():void{
area = (_radiusSQ * Math.PI);
}
override public function calculateMotionData2D():MotionData2D{
var _local1:Number = (StardustMath.TWO_PI * Math.random());
var _local2:Number = (_radius * Math.sqrt(Math.random()));
return (MotionData2DPool.get(((_local2 * Math.cos(_local1)) + x), ((_local2 * Math.sin(_local1)) + y)));
}
public function get radius():Number{
return (_radius);
}
override public function toXML():XML{
var _local1:XML = super.toXML();
_local1.@x = x;
_local1.@y = y;
_local1.@radius = radius;
return (_local1);
}
override public function parseXML(_arg1:XML, _arg2:XMLBuilder=null):void{
super.parseXML(_arg1, _arg2);
x = parseFloat(_arg1.@x);
y = parseFloat(_arg1.@y);
radius = parseFloat(_arg1.@radius);
}
}
}//package idv.cjcat.stardust.twoD.zones
Section 229
//CompositeZone (idv.cjcat.stardust.twoD.zones.CompositeZone)
package idv.cjcat.stardust.twoD.zones {
import idv.cjcat.stardust.common.xml.*;
import idv.cjcat.stardust.twoD.geom.*;
public class CompositeZone extends Zone {
private var _zones:Array;
public function CompositeZone(){
_zones = [];
}
override public function getXMLTagName():String{
return ("CompositeZone");
}
override public function getRelatedObjects():Array{
return (_zones);
}
override public function parseXML(_arg1:XML, _arg2:XMLBuilder=null):void{
var _local3:XML;
super.parseXML(_arg1, _arg2);
clearZones();
for each (_local3 in _arg1.zones.*) {
addZone((_arg2.getElementByName(_local3.@name) as Zone));
};
}
final public function addZone(_arg1:Zone):void{
_zones.push(_arg1);
updateArea();
}
override protected function updateArea():void{
var _local1:Zone;
area = 0;
for each (_local1 in _zones) {
area = (area + _local1.getArea());
};
}
final public function removeZone(_arg1:Zone):void{
var _local2:int;
while ((_local2 = _zones.indexOf(_arg1)) >= 0) {
_zones.splice(_local2, 1);
};
updateArea();
}
override public function calculateMotionData2D():MotionData2D{
var _local1:Number = (Math.random() * getArea());
var _local2:Number = 0;
var _local3:int;
while (_local3 < _zones.length) {
_local2 = (_local2 + Zone(_zones[_local3]).getArea());
if (_local1 < _local2){
return (Zone(_zones[_local3]).calculateMotionData2D());
};
_local3++;
};
return (new MotionData2D());
}
final public function clearZones():void{
_zones = [];
updateArea();
}
override public function toXML():XML{
var _local2:Zone;
var _local1:XML = super.toXML();
if (_zones.length > 0){
_local1.appendChild(<zones/>
);
for each (_local2 in _zones) {
_local1.zones.appendChild(_local2.getXMLTag());
};
};
return (_local1);
}
override public function contains(_arg1:Number, _arg2:Number):Boolean{
var _local3:Zone;
for each (_local3 in _zones) {
if (_local3.contains(_arg1, _arg2)){
return (true);
};
};
return (false);
}
}
}//package idv.cjcat.stardust.twoD.zones
Section 230
//Contour (idv.cjcat.stardust.twoD.zones.Contour)
package idv.cjcat.stardust.twoD.zones {
import idv.cjcat.stardust.common.xml.*;
public class Contour extends Zone {
private var _virtualThickness:Number;
public function Contour(){
_virtualThickness = 1;
}
final public function set virtualThickness(_arg1:Number):void{
_virtualThickness = _arg1;
updateArea();
}
override public function getXMLTagName():String{
return ("Contour");
}
override public function parseXML(_arg1:XML, _arg2:XMLBuilder=null):void{
super.parseXML(_arg1, _arg2);
virtualThickness = parseFloat(_arg1.@virtualThickness);
}
final public function get virtualThickness():Number{
return (_virtualThickness);
}
override public function toXML():XML{
var _local1:XML = super.toXML();
_local1.@virtualThickness = virtualThickness;
return (_local1);
}
}
}//package idv.cjcat.stardust.twoD.zones
Section 231
//LazySectorZone (idv.cjcat.stardust.twoD.zones.LazySectorZone)
package idv.cjcat.stardust.twoD.zones {
import flash.events.*;
import idv.cjcat.stardust.common.xml.*;
import idv.cjcat.stardust.twoD.geom.*;
import idv.cjcat.stardust.twoD.events.*;
public class LazySectorZone extends SectorZone {
private var _direction:Vec2D;
private var _radius:Number;
private var _radiusVar:Number;
private var _directionVar:Number;
public function LazySectorZone(_arg1:Number=50, _arg2:Number=50){
_radius = _arg1;
_radiusVar = _arg2;
_direction = new Vec2D(0, -1);
_direction.addEventListener(Vec2DEvent.CHANGE, updateSector);
_directionVar = 180;
updateSector();
}
public function set radius(_arg1:Number):void{
_radius = _arg1;
updateSector();
}
public function get direction():Vec2D{
return (_direction);
}
public function get directionVar():Number{
return (_directionVar);
}
public function set radiusVar(_arg1:Number):void{
_radiusVar = _arg1;
updateSector();
}
override public function getXMLTagName():String{
return ("LazySectorZone");
}
public function updateSector(_arg1:Event=null):void{
minRadius = (_radius - _radiusVar);
maxRadius = (_radius + _radiusVar);
minAngle = (_direction.angle - _directionVar);
maxAngle = (_direction.angle + _directionVar);
}
public function set directionVar(_arg1:Number):void{
_directionVar = _arg1;
updateSector();
}
public function get radius():Number{
return (_radius);
}
public function get radiusVar():Number{
return (_radiusVar);
}
override public function toXML():XML{
var _local1:XML = getXMLTag();
_local1.@radius = radius;
_local1.@radiusVar = radiusVar;
_local1.@directionX = direction.x;
_local1.@directionY = direction.y;
_local1.@directionVar = directionVar;
return (_local1);
}
override public function parseXML(_arg1:XML, _arg2:XMLBuilder=null):void{
super.parseXML(_arg1, _arg2);
radius = parseFloat(_arg1.@radius);
radiusVar = parseFloat(_arg1.@radiusVar);
direction.x = parseFloat(_arg1.@directionX);
direction.y = parseFloat(_arg1.@directionY);
directionVar = parseFloat(_arg1.@directionVar);
}
}
}//package idv.cjcat.stardust.twoD.zones
Section 232
//Line (idv.cjcat.stardust.twoD.zones.Line)
package idv.cjcat.stardust.twoD.zones {
import idv.cjcat.stardust.common.xml.*;
import idv.cjcat.stardust.twoD.geom.*;
import idv.cjcat.stardust.common.math.*;
public class Line extends Contour {
public var x1:Number;
private var _random:Random;
public var y1:Number;
public var y2:Number;
public var x2:Number;
public function Line(_arg1:Number=0, _arg2:Number=0, _arg3:Number=0, _arg4:Number=0, _arg5:Random=null){
this.x1 = _arg1;
this.y1 = _arg2;
this.x2 = _arg3;
this.y2 = _arg4;
this.random = _arg5;
updateArea();
}
public function get random():Random{
return (_random);
}
public function set random(_arg1:Random):void{
if (!_arg1){
_arg1 = new UniformRandom();
};
_random = _arg1;
}
override public function getXMLTagName():String{
return ("Line");
}
override public function contains(_arg1:Number, _arg2:Number):Boolean{
if ((((_arg1 < x1)) && ((_arg1 < x2)))){
return (false);
};
if ((((_arg1 > x1)) && ((_arg1 > x2)))){
return (false);
};
if (((_arg1 - x1) / (x2 - x1)) == ((_arg2 - y1) / (y2 - y1))){
return (true);
};
return (false);
}
override public function parseXML(_arg1:XML, _arg2:XMLBuilder=null):void{
super.parseXML(_arg1, _arg2);
x1 = parseFloat(_arg1.@x1);
y1 = parseFloat(_arg1.@y1);
x2 = parseFloat(_arg1.@x2);
y2 = parseFloat(_arg1.@y2);
}
override protected function updateArea():void{
var _local1:Number = (x1 - x2);
var _local2:Number = (y1 - y2);
area = (Math.sqrt(((_local1 * _local1) + (_local2 * _local2))) * virtualThickness);
}
override public function toXML():XML{
var _local1:XML = super.toXML();
_local1.@x1 = x1;
_local1.@y1 = y1;
_local1.@x2 = x2;
_local1.@y2 = y2;
return (_local1);
}
override public function calculateMotionData2D():MotionData2D{
_random.setRange(0, 1);
var _local1:Number = _random.random();
return (new MotionData2D(StardustMath.interpolate(0, x1, 1, x2, _local1), StardustMath.interpolate(0, y1, 1, y2, _local1)));
}
}
}//package idv.cjcat.stardust.twoD.zones
Section 233
//RectContour (idv.cjcat.stardust.twoD.zones.RectContour)
package idv.cjcat.stardust.twoD.zones {
import idv.cjcat.stardust.common.xml.*;
public class RectContour extends CompositeZone {
private var _line3:Line;
private var _line4:Line;
private var _line1:Line;
private var _height:Number;
private var _width:Number;
private var _virtualThickness:Number;
private var _x:Number;
private var _y:Number;
private var _line2:Line;
public function RectContour(_arg1:Number=0, _arg2:Number=0, _arg3:Number=640, _arg4:Number=480){
_line1 = new Line();
_line2 = new Line();
_line3 = new Line();
_line4 = new Line();
addZone(_line1);
addZone(_line2);
addZone(_line3);
addZone(_line4);
virtualThickness = 1;
this.x = _arg1;
this.y = _arg2;
this.width = _arg3;
this.height = _arg4;
}
public function get width():Number{
return (_width);
}
public function set virtualThickness(_arg1:Number):void{
_line1.virtualThickness = _arg1;
_line2.virtualThickness = _arg1;
_line3.virtualThickness = _arg1;
_line4.virtualThickness = _arg1;
updateArea();
}
public function set width(_arg1:Number):void{
_width = _arg1;
updateContour();
updateArea();
}
public function set height(_arg1:Number):void{
_height = _arg1;
updateContour();
updateArea();
}
private function updateContour():void{
_line1.x1 = x;
_line1.y1 = y;
_line1.x2 = (x + width);
_line1.y2 = y;
_line2.x1 = x;
_line2.y1 = (y + height);
_line2.x2 = (x + width);
_line2.y2 = (y + height);
_line3.x1 = x;
_line3.y1 = y;
_line3.x2 = x;
_line3.y2 = (y + height);
_line4.x1 = (x + width);
_line4.y1 = y;
_line4.x2 = (x + width);
_line4.y2 = (y + height);
}
override public function toXML():XML{
var _local1:XML = super.toXML();
delete _local1.zones;
_local1.@virtualThickness = virtualThickness;
_local1.@x = x;
_local1.@y = y;
_local1.@width = width;
_local1.@height = height;
return (_local1);
}
override public function getRelatedObjects():Array{
return ([]);
}
override public function getXMLTagName():String{
return ("RectContour");
}
public function get height():Number{
return (_height);
}
public function get virtualThickness():Number{
return (_virtualThickness);
}
override public function parseXML(_arg1:XML, _arg2:XMLBuilder=null):void{
super.parseXML(_arg1, _arg2);
virtualThickness = parseFloat(_arg1.@virtualThickness);
x = parseFloat(_arg1.@x);
y = parseFloat(_arg1.@y);
width = parseFloat(_arg1.@width);
height = parseFloat(_arg1.@height);
}
public function set x(_arg1:Number):void{
_x = _arg1;
updateContour();
updateArea();
}
public function set y(_arg1:Number):void{
_y = _arg1;
updateContour();
updateArea();
}
public function get x():Number{
return (_x);
}
public function get y():Number{
return (_y);
}
}
}//package idv.cjcat.stardust.twoD.zones
Section 234
//RectZone (idv.cjcat.stardust.twoD.zones.RectZone)
package idv.cjcat.stardust.twoD.zones {
import idv.cjcat.stardust.common.xml.*;
import idv.cjcat.stardust.twoD.geom.*;
import idv.cjcat.stardust.common.math.*;
public class RectZone extends Zone {
private var _randomX:Random;
private var _height:Number;
private var _width:Number;
private var _randomY:Random;
public var x:Number;
public var y:Number;
public function RectZone(_arg1:Number=0, _arg2:Number=0, _arg3:Number=640, _arg4:Number=480, _arg5:Random=null, _arg6:Random=null){
if (!_arg5){
_arg5 = new UniformRandom();
};
if (!_arg6){
_arg6 = new UniformRandom();
};
this.x = _arg1;
this.y = _arg2;
this.width = _arg3;
this.height = _arg4;
this.randomX = _arg5;
this.randomY = _arg6;
}
public function get width():Number{
return (_width);
}
public function set width(_arg1:Number):void{
_width = _arg1;
updateArea();
}
public function set height(_arg1:Number):void{
_height = _arg1;
updateArea();
}
override public function calculateMotionData2D():MotionData2D{
randomX.setRange(x, (x + _width));
randomY.setRange(y, (y + _height));
return (new MotionData2D(randomX.random(), randomY.random()));
}
override public function toXML():XML{
var _local1:XML = super.toXML();
_local1.@x = x;
_local1.@y = y;
_local1.@width = width;
_local1.@height = height;
_local1.@randomX = randomX.name;
_local1.@randomY = randomY.name;
return (_local1);
}
override public function contains(_arg1:Number, _arg2:Number):Boolean{
if ((((_arg1 < this.x)) || ((_arg1 > (this.x + width))))){
return (false);
};
if ((((_arg2 < this.y)) || ((_arg2 > (this.y + height))))){
return (false);
};
return (true);
}
override public function getXMLTagName():String{
return ("RectZone");
}
override public function getRelatedObjects():Array{
return ([_randomX, _randomY]);
}
public function get height():Number{
return (_height);
}
public function set randomX(_arg1:Random):void{
if (!_arg1){
_arg1 = new UniformRandom();
};
_randomX = _arg1;
}
override public function parseXML(_arg1:XML, _arg2:XMLBuilder=null):void{
super.parseXML(_arg1, _arg2);
x = parseFloat(_arg1.@x);
y = parseFloat(_arg1.@y);
width = parseFloat(_arg1.@width);
height = parseFloat(_arg1.@height);
randomX = (_arg2.getElementByName(_arg1.@randomX) as Random);
randomY = (_arg2.getElementByName(_arg1.@randomY) as Random);
}
public function set randomY(_arg1:Random):void{
if (!_arg1){
_arg1 = new UniformRandom();
};
_randomY = _arg1;
}
public function get randomX():Random{
return (_randomX);
}
override protected function updateArea():void{
area = (_width * _height);
}
public function get randomY():Random{
return (_randomY);
}
}
}//package idv.cjcat.stardust.twoD.zones
Section 235
//SectorZone (idv.cjcat.stardust.twoD.zones.SectorZone)
package idv.cjcat.stardust.twoD.zones {
import idv.cjcat.stardust.common.xml.*;
import idv.cjcat.stardust.twoD.geom.*;
import idv.cjcat.stardust.common.math.*;
public class SectorZone extends Zone {
private var _minRadius:Number;
private var _maxAngle:Number;
private var _minAngle:Number;
private var _maxAngleRad:Number;
private var _maxRadius:Number;
private var _randomT:Random;
private var _minAngleRad:Number;
public var x:Number;
public var y:Number;
private var _r1SQ:Number;
private var _r2SQ:Number;
public function SectorZone(_arg1:Number=0, _arg2:Number=0, _arg3:Number=0, _arg4:Number=100, _arg5:Number=0, _arg6:Number=360){
_randomT = new UniformRandom();
this.x = 0;
this.y = 0;
this._minRadius = _arg3;
this._maxRadius = _arg4;
this._minAngle = _arg5;
this._maxAngle = _arg6;
updateArea();
}
public function set minAngle(_arg1:Number):void{
_minAngle = _arg1;
updateArea();
}
public function get minRadius():Number{
return (_minRadius);
}
public function set minRadius(_arg1:Number):void{
_minRadius = _arg1;
updateArea();
}
public function get maxAngle():Number{
return (_maxAngle);
}
override public function parseXML(_arg1:XML, _arg2:XMLBuilder=null):void{
super.parseXML(_arg1, _arg2);
x = parseFloat(_arg1.@x);
y = parseFloat(_arg1.@y);
minRadius = parseFloat(_arg1.@minRadius);
maxRadius = parseFloat(_arg1.@maxRadius);
minAngle = parseFloat(_arg1.@minAngle);
maxAngle = parseFloat(_arg1.@maxAngle);
}
public function get maxRadius():Number{
return (_maxRadius);
}
override public function calculateMotionData2D():MotionData2D{
if (_maxRadius == 0){
return (new MotionData2D(x, y));
};
_randomT.setRange(_minAngleRad, _maxAngleRad);
var _local1:Number = _randomT.random();
var _local2:Number = StardustMath.interpolate(0, _minRadius, 1, _maxRadius, Math.sqrt(Math.random()));
return (new MotionData2D(((_local2 * Math.cos(_local1)) + x), ((_local2 * Math.sin(_local1)) + y)));
}
public function set maxAngle(_arg1:Number):void{
_maxAngle = _arg1;
updateArea();
}
override public function contains(_arg1:Number, _arg2:Number):Boolean{
return (false);
}
public function get minAngle():Number{
return (_minAngle);
}
override public function toXML():XML{
var _local1:XML = super.toXML();
_local1.@x = x;
_local1.@y = y;
_local1.@minRadius = minRadius;
_local1.@maxRadius = maxRadius;
_local1.@minAngle = minAngle;
_local1.@maxAngle = maxAngle;
return (_local1);
}
override public function getRelatedObjects():Array{
return ([]);
}
override public function getXMLTagName():String{
return ("SectorZone");
}
public function set maxRadius(_arg1:Number):void{
_maxRadius = _arg1;
updateArea();
}
override protected function updateArea():void{
_minAngleRad = (_minAngle * StardustMath.DEGREE_TO_RADIAN);
_maxAngleRad = (_maxAngle * StardustMath.DEGREE_TO_RADIAN);
var _local1:Number = (_maxAngleRad - _minAngleRad);
_r1SQ = (_minRadius * _minRadius);
_r2SQ = (_maxRadius * _maxRadius);
var _local2:Number = (_r2SQ - _r1SQ);
area = Math.abs((_local2 * _local1));
}
}
}//package idv.cjcat.stardust.twoD.zones
Section 236
//SinglePoint (idv.cjcat.stardust.twoD.zones.SinglePoint)
package idv.cjcat.stardust.twoD.zones {
import idv.cjcat.stardust.common.xml.*;
import idv.cjcat.stardust.twoD.geom.*;
public class SinglePoint extends Contour {
public var y:Number;
public var x:Number;
public function SinglePoint(_arg1:Number=0, _arg2:Number=0){
this.x = _arg1;
this.y = _arg2;
}
override public function toXML():XML{
var _local1:XML = super.toXML();
_local1.@x = x;
_local1.@y = y;
return (_local1);
}
override public function parseXML(_arg1:XML, _arg2:XMLBuilder=null):void{
super.parseXML(_arg1, _arg2);
x = parseFloat(_arg1.@x);
y = parseFloat(_arg1.@y);
}
override public function contains(_arg1:Number, _arg2:Number):Boolean{
if ((((this.x == _arg1)) && ((this.y == _arg2)))){
return (true);
};
return (false);
}
override public function getXMLTagName():String{
return ("SinglePoint");
}
override protected function updateArea():void{
area = ((virtualThickness * virtualThickness) * Math.PI);
}
override public function calculateMotionData2D():MotionData2D{
return (MotionData2DPool.get(x, y));
}
}
}//package idv.cjcat.stardust.twoD.zones
Section 237
//Zone (idv.cjcat.stardust.twoD.zones.Zone)
package idv.cjcat.stardust.twoD.zones {
import idv.cjcat.stardust.common.xml.*;
import idv.cjcat.stardust.common.*;
import idv.cjcat.stardust.twoD.geom.*;
public class Zone extends StardustElement {
protected var area:Number;
public var rotation:Number;
public function Zone(){
rotation = 0;
}
final public function getArea():Number{
return (area);
}
override public function getXMLTagName():String{
return ("Zone");
}
override public function parseXML(_arg1:XML, _arg2:XMLBuilder=null):void{
super.parseXML(_arg1, _arg2);
rotation = parseFloat(_arg1.@rotation);
}
override public function getElementTypeXMLTag():XML{
return (<zones/>
);
}
override public function toXML():XML{
var _local1:XML = super.toXML();
_local1.@rotation = rotation;
return (_local1);
}
protected function updateArea():void{
}
public function calculateMotionData2D():MotionData2D{
return (null);
}
final public function getPoint():MotionData2D{
var _local2:Vec2D;
var _local1:MotionData2D = calculateMotionData2D();
if (rotation != 0){
_local2 = Vec2DPool.get(_local1.x, _local1.y);
_local2.rotateThis(rotation);
_local1.x = _local2.x;
_local1.y = _local2.y;
Vec2DPool.recycle(_local2);
};
return (_local1);
}
public function contains(_arg1:Number, _arg2:Number):Boolean{
return (false);
}
}
}//package idv.cjcat.stardust.twoD.zones
Section 238
//TwoDClassPackage (idv.cjcat.stardust.twoD.TwoDClassPackage)
package idv.cjcat.stardust.twoD {
import idv.cjcat.stardust.common.xml.*;
import idv.cjcat.stardust.twoD.initializers.*;
import idv.cjcat.stardust.twoD.actions.*;
import idv.cjcat.stardust.twoD.zones.*;
import idv.cjcat.stardust.twoD.deflectors.*;
import idv.cjcat.stardust.twoD.fields.*;
import idv.cjcat.stardust.twoD.emitters.*;
import idv.cjcat.stardust.twoD.renderers.*;
import idv.cjcat.stardust.twoD.actions.triggers.*;
public class TwoDClassPackage extends ClassPackage {
private static var _instance:TwoDClassPackage;
final override protected function populateClasses():void{
classes.push(RandomDrift);
classes.push(Accelerate);
classes.push(Collide);
classes.push(Damping);
classes.push(DeathZone);
classes.push(Deflect);
classes.push(Explode);
classes.push(Gravity);
classes.push(Impulse);
classes.push(LazyAction);
classes.push(Move);
classes.push(MutualGravity);
classes.push(NormalDrift);
classes.push(Oriented);
classes.push(ReorderDisplayObject);
classes.push(Spawn);
classes.push(SpeedLimit);
classes.push(Spin);
classes.push(StardustSpriteUpdate);
classes.push(VelocityField);
classes.push(ZoneTrigger);
classes.push(BoundingBox);
classes.push(BoundingCircle);
classes.push(CircleDeflector);
classes.push(LineDeflector);
classes.push(WrappingBox);
classes.push(Emitter2D);
classes.push(BitmapField);
classes.push(RadialField);
classes.push(UniformField);
classes.push(DisplayObjectClass);
classes.push(DisplayObjectParent);
classes.push(LazyInitializer);
classes.push(Omega);
classes.push(Position);
classes.push(Rotation);
classes.push(Velocity);
classes.push(BitmapRenderer);
classes.push(DisplayObjectRenderer);
classes.push(SingularBitmapRenderer);
classes.push(PixelRenderer);
classes.push(BitmapZone);
classes.push(CircleContour);
classes.push(CircleZone);
classes.push(CompositeZone);
classes.push(LazySectorZone);
classes.push(Line);
classes.push(RectContour);
classes.push(RectZone);
classes.push(SectorZone);
classes.push(SinglePoint);
}
public static function getInstance():TwoDClassPackage{
if (!_instance){
_instance = new (TwoDClassPackage);
};
return (_instance);
}
}
}//package idv.cjcat.stardust.twoD
Section 239
//sd (idv.cjcat.stardust.sd)
package idv.cjcat.stardust {
public namespace sd = "http://cjcat.idv/stardust";
}//package idv.cjcat.stardust
Section 240
//Stardust (idv.cjcat.stardust.Stardust)
package idv.cjcat.stardust {
public class Stardust {
public static const BLOG:String = "http://cjcat.blogspot.com";
public static const PROJECT_NAME:String = "Stardust Particle Engine";
public static const GALLERY:String = "http://cjcat2266.deviantart.com";
public static const PROJECT_HOMEPAGE:String = "http://code.google.com/p/stardust-particle-engine";
public static const AUTHOR:String = "CJ Cat (Allen Chou)";
public static const EMAIL:String = "cjcat2266@gmail.com";
public static const VERSION:String = "1.0.92 Beta";
}
}//package idv.cjcat.stardust
Section 241
//MochiAd (mochi.as3.MochiAd)
package mochi.as3 {
import flash.display.*;
import flash.events.*;
import flash.utils.*;
import flash.net.*;
import flash.system.*;
public class MochiAd {
public static function getVersion():String{
return (MochiServices.getVersion());
}
public static function showClickAwayAd(_arg1:Object):void{
var clip:Object;
var mc:MovieClip;
var chk:MovieClip;
var options = _arg1;
var DEFAULTS:Object = {ad_timeout:2000, regpt:"o", method:"showClickAwayAd", res:"300x250", no_bg:true, ad_started:function ():void{
}, ad_finished:function ():void{
}, ad_loaded:function (_arg1:Number, _arg2:Number):void{
}, ad_failed:function ():void{
}, ad_skipped:function ():void{
}};
options = MochiAd._parseOptions(options, DEFAULTS);
clip = options.clip;
var ad_timeout:Number = options.ad_timeout;
delete options.ad_timeout;
if (!MochiAd.load(options)){
options.ad_failed();
options.ad_finished();
return;
};
options.ad_started();
mc = clip._mochiad;
mc["onUnload"] = function ():void{
MochiAd._cleanup(mc);
options.ad_finished();
};
var wh:Array = MochiAd._getRes(options, clip);
var w:Number = wh[0];
var h:Number = wh[1];
mc.x = (w * 0.5);
mc.y = (h * 0.5);
chk = createEmptyMovieClip(mc, "_mochiad_wait", 3);
chk.ad_timeout = ad_timeout;
chk.started = getTimer();
chk.showing = false;
mc.unloadAd = function ():void{
MochiAd.unload(clip);
};
mc.adLoaded = options.ad_loaded;
mc.adSkipped = options.ad_skipped;
mc.rpc = function (_arg1:Number, _arg2:Object):void{
MochiAd.rpc(clip, _arg1, _arg2);
};
var sendHostProgress:Boolean;
mc.regContLC = function (_arg1:String):void{
mc._containerLCName = _arg1;
};
chk["onEnterFrame"] = function ():void{
var _local4:Number;
if (!this.parent){
delete this.onEnterFrame;
return;
};
var _local1:Object = this.parent._mochiad_ctr;
var _local2:Number = (getTimer() - this.started);
var _local3:Boolean;
if (!chk.showing){
_local4 = this.parent._mochiad_ctr.contentLoaderInfo.bytesTotal;
if (_local4 > 0){
chk.showing = true;
_local3 = true;
chk.started = getTimer();
} else {
if (_local2 > chk.ad_timeout){
options.ad_failed();
_local3 = true;
};
};
};
if (this.root == null){
_local3 = true;
};
if (_local3){
delete this.onEnterFrame;
};
};
doOnEnterFrame(chk);
}
public static function _isNetworkAvailable():Boolean{
return (!((Security.sandboxType == "localWithFile")));
}
public static function _allowDomains(_arg1:String):String{
var _local2:String = _arg1.split("/")[2].split(":")[0];
if (Security.sandboxType == "application"){
return (_local2);
};
Security.allowDomain("*");
Security.allowDomain(_local2);
Security.allowInsecureDomain("*");
Security.allowInsecureDomain(_local2);
return (_local2);
}
public static function unload(_arg1:Object):Boolean{
if (((_arg1.clip) && (_arg1.clip._mochiad))){
_arg1 = _arg1.clip;
};
if (_arg1.origFrameRate != undefined){
_arg1.stage.frameRate = _arg1.origFrameRate;
};
if (!_arg1._mochiad){
return (false);
};
if (_arg1._mochiad._containerLCName != undefined){
_arg1._mochiad.lc.send(_arg1._mochiad._containerLCName, "notify", {id:"unload"});
};
if (_arg1._mochiad.onUnload){
_arg1._mochiad.onUnload();
};
delete _arg1._mochiad_loaded;
delete _arg1._mochiad;
return (true);
}
public static function showInterLevelAd(_arg1:Object):void{
var clip:Object;
var mc:MovieClip;
var chk:MovieClip;
var options = _arg1;
var DEFAULTS:Object = {ad_timeout:2000, fadeout_time:250, regpt:"o", method:"showTimedAd", ad_started:function ():void{
if ((this.clip is MovieClip)){
this.clip.stop();
} else {
throw (new Error("MochiAd.showInterLevelAd requires a clip that is a MovieClip or is an instance of a class that extends MovieClip. If your clip is a Sprite, then you must provide custom ad_started and ad_finished handlers."));
};
}, ad_finished:function ():void{
if ((this.clip is MovieClip)){
this.clip.play();
} else {
throw (new Error("MochiAd.showInterLevelAd requires a clip that is a MovieClip or is an instance of a class that extends MovieClip. If your clip is a Sprite, then you must provide custom ad_started and ad_finished handlers."));
};
}, ad_loaded:function (_arg1:Number, _arg2:Number):void{
}, ad_failed:function ():void{
}, ad_skipped:function ():void{
}};
options = MochiAd._parseOptions(options, DEFAULTS);
clip = options.clip;
var ad_msec:Number = 11000;
var ad_timeout:Number = options.ad_timeout;
delete options.ad_timeout;
var fadeout_time:Number = options.fadeout_time;
delete options.fadeout_time;
if (!MochiAd.load(options)){
options.ad_failed();
options.ad_finished();
return;
};
options.ad_started();
mc = clip._mochiad;
mc["onUnload"] = function ():void{
MochiAd._cleanup(mc);
options.ad_finished();
};
var wh:Array = MochiAd._getRes(options, clip);
var w:Number = wh[0];
var h:Number = wh[1];
mc.x = (w * 0.5);
mc.y = (h * 0.5);
chk = createEmptyMovieClip(mc, "_mochiad_wait", 3);
chk.ad_msec = ad_msec;
chk.ad_timeout = ad_timeout;
chk.started = getTimer();
chk.showing = false;
chk.fadeout_time = fadeout_time;
chk.fadeFunction = function ():void{
if (!this.parent){
delete this.onEnterFrame;
delete this.fadeFunction;
return;
};
var _local1:Number = (100 * (1 - ((getTimer() - this.fadeout_start) / this.fadeout_time)));
if (_local1 > 0){
this.parent.alpha = (_local1 * 0.01);
} else {
MochiAd.unload(clip);
delete this["onEnterFrame"];
};
};
mc.unloadAd = function ():void{
MochiAd.unload(clip);
};
mc.adLoaded = options.ad_loaded;
mc.adSkipped = options.ad_skipped;
mc.adjustProgress = function (_arg1:Number):void{
var _local2:Object = mc._mochiad_wait;
_local2.server_control = true;
_local2.showing = true;
_local2.started = getTimer();
_local2.ad_msec = (_arg1 - 250);
};
mc.rpc = function (_arg1:Number, _arg2:Object):void{
MochiAd.rpc(clip, _arg1, _arg2);
};
chk["onEnterFrame"] = function ():void{
var _local4:Number;
if (!this.parent){
delete this.onEnterFrame;
delete this.fadeFunction;
return;
};
var _local1:Object = this.parent._mochiad_ctr;
var _local2:Number = (getTimer() - this.started);
var _local3:Boolean;
if (!chk.showing){
_local4 = this.parent._mochiad_ctr.contentLoaderInfo.bytesTotal;
if (_local4 > 0){
chk.showing = true;
chk.started = getTimer();
MochiAd.adShowing(clip);
} else {
if (_local2 > chk.ad_timeout){
options.ad_failed();
_local3 = true;
};
};
};
if (_local2 > chk.ad_msec){
_local3 = true;
};
if (_local3){
if (this.server_control){
delete this.onEnterFrame;
} else {
this.fadeout_start = getTimer();
this.onEnterFrame = this.fadeFunction;
};
};
};
doOnEnterFrame(chk);
}
public static function _parseOptions(_arg1:Object, _arg2:Object):Object{
var _local4:String;
var _local5:Array;
var _local6:Number;
var _local7:Array;
var _local3:Object = {};
for (_local4 in _arg2) {
_local3[_local4] = _arg2[_local4];
};
if (_arg1){
for (_local4 in _arg1) {
_local3[_local4] = _arg1[_local4];
};
};
if (_local3.clip == undefined){
throw (new Error("MochiAd is missing the 'clip' parameter. This should be a MovieClip, Sprite or an instance of a class that extends MovieClip or Sprite."));
};
_arg1 = _local3.clip.loaderInfo.parameters.mochiad_options;
if (_arg1){
_local5 = _arg1.split("&");
_local6 = 0;
while (_local6 < _local5.length) {
_local7 = _local5[_local6].split("=");
_local3[unescape(_local7[0])] = unescape(_local7[1]);
_local6++;
};
};
if (_local3.id == "test"){
};
return (_local3);
}
public static function _cleanup(_arg1:Object):void{
var k:String;
var lc:LocalConnection;
var f:Function;
var mc = _arg1;
if (("lc" in mc)){
lc = mc.lc;
f = function ():void{
try {
lc.client = null;
lc.close();
} catch(e:Error) {
};
};
setTimeout(f, 0);
};
var idx:Number = DisplayObjectContainer(mc).numChildren;
while (idx > 0) {
idx = (idx - 1);
DisplayObjectContainer(mc).removeChildAt(idx);
};
for (k in mc) {
delete mc[k];
};
}
public static function load(_arg1:Object):MovieClip{
var clip:Object;
var k:String;
var server:String;
var hostname:String;
var lc:LocalConnection;
var name:String;
var loader:Loader;
var g:Function;
var req:URLRequest;
var v:Object;
var options = _arg1;
var DEFAULTS:Object = {server:"http://x.mochiads.com/srv/1/", method:"load", depth:10333, id:"_UNKNOWN_"};
options = MochiAd._parseOptions(options, DEFAULTS);
options.swfv = 9;
options.mav = MochiAd.getVersion();
clip = options.clip;
if (!MochiAd._isNetworkAvailable()){
return (null);
};
try {
if (clip._mochiad_loaded){
return (null);
};
} catch(e:Error) {
throw (new Error("MochiAd requires a clip that is an instance of a dynamic class. If your class extends Sprite or MovieClip, you must make it dynamic."));
};
var depth:Number = options.depth;
delete options.depth;
var mc:MovieClip = createEmptyMovieClip(clip, "_mochiad", depth);
var wh:Array = MochiAd._getRes(options, clip);
options.res = ((wh[0] + "x") + wh[1]);
options.server = (options.server + options.id);
delete options.id;
clip._mochiad_loaded = true;
if (clip.loaderInfo.loaderURL.indexOf("http") == 0){
options.as3_swf = clip.loaderInfo.loaderURL;
//unresolved jump
};
var lv:URLVariables = new URLVariables();
for (k in options) {
v = options[k];
if (!(v is Function)){
lv[k] = v;
};
};
server = lv.server;
delete lv.server;
hostname = _allowDomains(server);
lc = new LocalConnection();
lc.client = mc;
name = ["", Math.floor(new Date().getTime()), Math.floor((Math.random() * 999999))].join("_");
lc.allowDomain("*", "localhost");
lc.allowInsecureDomain("*", "localhost");
lc.connect(name);
mc.lc = lc;
mc.lcName = name;
lv.lc = name;
lv.st = getTimer();
loader = new Loader();
g = function (_arg1:Object):void{
_arg1.target.removeEventListener(_arg1.type, arguments.callee);
MochiAd.unload(clip);
};
loader.contentLoaderInfo.addEventListener(Event.UNLOAD, g);
req = new URLRequest(((server + ".swf?cacheBust=") + new Date().getTime()));
req.contentType = "application/x-www-form-urlencoded";
req.method = URLRequestMethod.POST;
req.data = lv;
loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, function (_arg1:IOErrorEvent):void{
});
loader.load(req);
mc.addChild(loader);
mc._mochiad_ctr = loader;
return (mc);
}
public static function runMethod(_arg1:Object, _arg2:String, _arg3:Array):Object{
var _local4:Array = _arg2.split(".");
var _local5:Number = 0;
while (_local5 < (_local4.length - 1)) {
if ((((_arg1[_local4[_local5]] == undefined)) || ((_arg1[_local4[_local5]] == null)))){
return (undefined);
};
_arg1 = _arg1[_local4[_local5]];
_local5++;
};
if (typeof(_arg1[_local4[_local5]]) == "function"){
return (_arg1[_local4[_local5]].apply(_arg1, _arg3));
};
return (undefined);
}
public static function createEmptyMovieClip(_arg1:Object, _arg2:String, _arg3:Number):MovieClip{
var _local4:MovieClip = new MovieClip();
if (((false) && (_arg3))){
_arg1.addChildAt(_local4, _arg3);
} else {
_arg1.addChild(_local4);
};
_arg1[_arg2] = _local4;
_local4["_name"] = _arg2;
return (_local4);
}
public static function _getRes(_arg1:Object, _arg2:Object):Array{
var _local6:Array;
var _local3:Object = _arg2.getBounds(_arg2.root);
var _local4:Number = 0;
var _local5:Number = 0;
if (typeof(_arg1.res) != "undefined"){
_local6 = _arg1.res.split("x");
_local4 = parseFloat(_local6[0]);
_local5 = parseFloat(_local6[1]);
} else {
_local4 = (_local3.xMax - _local3.xMin);
_local5 = (_local3.yMax - _local3.yMin);
};
if ((((_local4 == 0)) || ((_local5 == 0)))){
_local4 = _arg2.stage.stageWidth;
_local5 = _arg2.stage.stageHeight;
};
return ([_local4, _local5]);
}
public static function adShowing(_arg1:Object):void{
_arg1.origFrameRate = _arg1.stage.frameRate;
_arg1.stage.frameRate = 30;
}
public static function getValue(_arg1:Object, _arg2:String):Object{
var _local3:Array = _arg2.split(".");
var _local4:Number = 0;
while (_local4 < (_local3.length - 1)) {
if ((((_arg1[_local3[_local4]] == undefined)) || ((_arg1[_local3[_local4]] == null)))){
return (undefined);
};
_arg1 = _arg1[_local3[_local4]];
_local4++;
};
return (_arg1[_local3[_local4]]);
}
public static function rpc(_arg1:Object, _arg2:Number, _arg3:Object):void{
var _local4:Object;
var _local5:Object;
switch (_arg3.id){
case "setValue":
MochiAd.setValue(_arg1, _arg3.objectName, _arg3.value);
break;
case "getValue":
_local4 = MochiAd.getValue(_arg1, _arg3.objectName);
_arg1._mochiad.lc.send(_arg1._mochiad._containerLCName, "rpcResult", _arg2, _local4);
break;
case "runMethod":
_local5 = MochiAd.runMethod(_arg1, _arg3.method, _arg3.args);
_arg1._mochiad.lc.send(_arg1._mochiad._containerLCName, "rpcResult", _arg2, _local5);
break;
};
}
public static function setValue(_arg1:Object, _arg2:String, _arg3:Object):void{
var _local4:Array = _arg2.split(".");
var _local5:Number = 0;
while (_local5 < (_local4.length - 1)) {
if ((((_arg1[_local4[_local5]] == undefined)) || ((_arg1[_local4[_local5]] == null)))){
return;
};
_arg1 = _arg1[_local4[_local5]];
_local5++;
};
_arg1[_local4[_local5]] = _arg3;
}
public static function showPreGameAd(_arg1:Object):void{
var clip:Object;
var mc:MovieClip;
var chk:MovieClip;
var complete:Boolean;
var unloaded:Boolean;
var sendHostProgress:Boolean;
var fn:Function;
var r:MovieClip;
var options = _arg1;
var DEFAULTS:Object = {ad_timeout:3000, fadeout_time:250, regpt:"o", method:"showPreloaderAd", color:0xFF8A00, background:16777161, outline:13994812, no_progress_bar:false, ad_started:function ():void{
if ((this.clip is MovieClip)){
this.clip.stop();
} else {
throw (new Error("MochiAd.showPreGameAd requires a clip that is a MovieClip or is an instance of a class that extends MovieClip. If your clip is a Sprite, then you must provide custom ad_started and ad_finished handlers."));
};
}, ad_finished:function ():void{
if ((this.clip is MovieClip)){
this.clip.play();
} else {
throw (new Error("MochiAd.showPreGameAd requires a clip that is a MovieClip or is an instance of a class that extends MovieClip. If your clip is a Sprite, then you must provide custom ad_started and ad_finished handlers."));
};
}, ad_loaded:function (_arg1:Number, _arg2:Number):void{
}, ad_failed:function ():void{
}, ad_skipped:function ():void{
}, ad_progress:function (_arg1:Number):void{
}, progress_override:function (_arg1:Object):Number{
return (NaN);
}, bar_offset:0};
options = MochiAd._parseOptions(options, DEFAULTS);
if ("c862232051e0a94e1c3609b3916ddb17".substr(0) == "dfeada81ac97cde83665f81c12da7def"){
options.ad_started();
fn = function ():void{
options.ad_finished();
};
setTimeout(fn, 100);
return;
};
clip = options.clip;
var ad_msec:Number = 11000;
var ad_timeout:Number = options.ad_timeout;
delete options.ad_timeout;
var fadeout_time:Number = options.fadeout_time;
delete options.fadeout_time;
if (!MochiAd.load(options)){
options.ad_failed();
options.ad_finished();
return;
};
options.ad_started();
mc = clip._mochiad;
mc["onUnload"] = function ():void{
MochiAd._cleanup(mc);
var fn:Function = function ():void{
options.ad_finished();
};
setTimeout(fn, 100);
};
var wh:Array = MochiAd._getRes(options, clip);
var w:Number = wh[0];
var h:Number = wh[1];
mc.x = (w * 0.5);
mc.y = (h * 0.5);
chk = createEmptyMovieClip(mc, "_mochiad_wait", 3);
chk.x = (w * -0.5);
chk.y = (h * -0.5);
var bar:MovieClip = createEmptyMovieClip(chk, "_mochiad_bar", 4);
if (options.no_progress_bar){
bar.visible = false;
delete options.no_progress_bar;
} else {
bar.x = (10 + options.bar_offset);
bar.y = (h - 20);
};
var bar_w:Number = ((w - bar.x) - 10);
var bar_color:Number = options.color;
delete options.color;
var bar_background:Number = options.background;
delete options.background;
var bar_outline:Number = options.outline;
delete options.outline;
var backing_mc:MovieClip = createEmptyMovieClip(bar, "_outline", 1);
var backing:Object = backing_mc.graphics;
backing.beginFill(bar_background);
backing.moveTo(0, 0);
backing.lineTo(bar_w, 0);
backing.lineTo(bar_w, 10);
backing.lineTo(0, 10);
backing.lineTo(0, 0);
backing.endFill();
var inside_mc:MovieClip = createEmptyMovieClip(bar, "_inside", 2);
var inside:Object = inside_mc.graphics;
inside.beginFill(bar_color);
inside.moveTo(0, 0);
inside.lineTo(bar_w, 0);
inside.lineTo(bar_w, 10);
inside.lineTo(0, 10);
inside.lineTo(0, 0);
inside.endFill();
inside_mc.scaleX = 0;
var outline_mc:MovieClip = createEmptyMovieClip(bar, "_outline", 3);
var outline:Object = outline_mc.graphics;
outline.lineStyle(0, bar_outline, 100);
outline.moveTo(0, 0);
outline.lineTo(bar_w, 0);
outline.lineTo(bar_w, 10);
outline.lineTo(0, 10);
outline.lineTo(0, 0);
chk.ad_msec = ad_msec;
chk.ad_timeout = ad_timeout;
chk.started = getTimer();
chk.showing = false;
chk.last_pcnt = 0;
chk.fadeout_time = fadeout_time;
chk.fadeFunction = function ():void{
var _local1:Number = (100 * (1 - ((getTimer() - this.fadeout_start) / this.fadeout_time)));
if (_local1 > 0){
this.parent.alpha = (_local1 * 0.01);
} else {
MochiAd.unload(clip);
delete this["onEnterFrame"];
};
};
complete = false;
unloaded = false;
var progress:Number = Math.min(1, options.progress_override(clip));
var f:Function = function (_arg1:Event):void{
_arg1.target.removeEventListener(_arg1.type, arguments.callee);
complete = true;
if (unloaded){
MochiAd.unload(clip);
};
};
if (!isNaN(progress)){
complete = (progress == 1);
} else {
if (clip.loaderInfo.bytesLoaded == clip.loaderInfo.bytesTotal){
complete = true;
} else {
if ((clip.root is MovieClip)){
r = (clip.root as MovieClip);
if (r.framesLoaded >= r.totalFrames){
complete = true;
} else {
clip.loaderInfo.addEventListener(Event.COMPLETE, f);
};
} else {
clip.loaderInfo.addEventListener(Event.COMPLETE, f);
};
};
};
mc.unloadAd = function ():void{
unloaded = true;
if (complete){
MochiAd.unload(clip);
};
};
mc.adLoaded = options.ad_loaded;
mc.adSkipped = options.ad_skipped;
mc.adjustProgress = function (_arg1:Number):void{
var _local2:Object = mc._mochiad_wait;
_local2.server_control = true;
_local2.showing = true;
_local2.started = getTimer();
_local2.ad_msec = _arg1;
};
mc.rpc = function (_arg1:Number, _arg2:Object):void{
MochiAd.rpc(clip, _arg1, _arg2);
};
mc.rpcTestFn = function (_arg1:String):Object{
return (_arg1);
};
mc.regContLC = function (_arg1:String):void{
mc._containerLCName = _arg1;
};
sendHostProgress = false;
mc.sendHostLoadProgress = function (_arg1:String):void{
sendHostProgress = true;
};
chk["onEnterFrame"] = function ():void{
var _local12:Number;
if (((!(this.parent)) || (!(this.parent.parent)))){
delete this["onEnterFrame"];
return;
};
var _local1:Object = this.parent.parent.root;
var _local2:Object = this.parent._mochiad_ctr;
var _local3:Number = (getTimer() - this.started);
var _local4:Boolean;
var _local5:Number = _local1.loaderInfo.bytesTotal;
var _local6:Number = _local1.loaderInfo.bytesLoaded;
var _local7:Number = Math.min(1, options.progress_override(_local1));
if (_local7 == 1){
complete = true;
};
if (complete){
_local6 = Math.max(1, _local6);
_local5 = _local6;
};
var _local8:Number = ((100 * _local6) / _local5);
if (!isNaN(_local7)){
_local8 = (100 * _local7);
};
var _local9:Number = ((100 * _local3) / chk.ad_msec);
var _local10:Object = this._mochiad_bar._inside;
var _local11:Number = Math.min(100, Math.min(((_local8) || (0)), _local9));
_local11 = Math.max(this.last_pcnt, _local11);
this.last_pcnt = _local11;
_local10.scaleX = (_local11 * 0.01);
options.ad_progress(_local11);
if (sendHostProgress){
clip._mochiad.lc.send(clip._mochiad._containerLCName, "notify", {id:"hostLoadPcnt", pcnt:_local8});
if (_local8 >= 100){
sendHostProgress = false;
};
};
if (!chk.showing){
_local12 = this.parent._mochiad_ctr.contentLoaderInfo.bytesTotal;
if (_local12 > 0){
chk.showing = true;
chk.started = getTimer();
MochiAd.adShowing(clip);
} else {
if ((((_local3 > chk.ad_timeout)) && ((_local8 == 100)))){
options.ad_failed();
_local4 = true;
};
};
};
if (_local3 > chk.ad_msec){
_local4 = true;
};
if (((complete) && (_local4))){
if (unloaded){
MochiAd.unload(_local1);
} else {
if (this.server_control){
delete this.onEnterFrame;
} else {
this.fadeout_start = getTimer();
this.onEnterFrame = chk.fadeFunction;
};
};
};
};
doOnEnterFrame(chk);
}
public static function showPreloaderAd(_arg1:Object):void{
MochiAd.showPreGameAd(_arg1);
}
public static function showTimedAd(_arg1:Object):void{
MochiAd.showInterLevelAd(_arg1);
}
public static function doOnEnterFrame(_arg1:MovieClip):void{
var mc = _arg1;
var f:Function = function (_arg1:Object):void{
if (((("onEnterFrame" in mc)) && (mc.onEnterFrame))){
mc.onEnterFrame();
} else {
_arg1.target.removeEventListener(_arg1.type, arguments.callee);
};
};
mc.addEventListener(Event.ENTER_FRAME, f);
}
}
}//package mochi.as3
Section 242
//MochiCoins (mochi.as3.MochiCoins)
package mochi.as3 {
public class MochiCoins {
public static const STORE_HIDE:String = "StoreHide";
public static const LOGGED_IN:String = "LoggedIn";
public static const STORE_ITEMS:String = "StoreItems";
public static const NO_USER:String = "NoUser";
public static const PROPERTIES_SIZE:String = "PropertiesSize";
public static const ITEM_NEW:String = "ItemNew";
public static const USER_INFO:String = "UserInfo";
public static const IO_ERROR:String = "IOError";
public static const ITEM_OWNED:String = "ItemOwned";
public static const PROPERTIES_SAVED:String = "PropertySaved";
public static const WIDGET_LOADED:String = "WidgetLoaded";
public static const ERROR:String = "Error";
public static const LOGGED_OUT:String = "LoggedOut";
public static const PROFILE_SHOW:String = "ProfileShow";
public static const LOGIN_HIDE:String = "LoginHide";
public static const LOGIN_SHOW:String = "LoginShow";
public static const STORE_SHOW:String = "StoreShow";
public static const PROFILE_HIDE:String = "ProfileHide";
private static var _dispatcher:MochiEventDispatcher = new MochiEventDispatcher();
public static function showItem(_arg1:Object=null):void{
if (((!(_arg1)) || (!((typeof(_arg1.item) == "string"))))){
return;
};
MochiServices.bringToTop();
MochiServices.send("coins_showItem", {options:_arg1}, null, null);
}
public static function saveUserProperties(_arg1:Object):void{
MochiServices.send("coins_saveUserProperties", _arg1);
}
public static function triggerEvent(_arg1:String, _arg2:Object):void{
_dispatcher.triggerEvent(_arg1, _arg2);
}
public static function showLoginWidget(_arg1:Object=null):void{
MochiServices.setContainer();
MochiServices.bringToTop();
MochiServices.send("coins_showLoginWidget", {options:_arg1});
}
public static function getStoreItems():void{
MochiServices.send("coins_getStoreItems");
}
public static function getVersion():String{
return (MochiServices.getVersion());
}
public static function showStore(_arg1:Object=null):void{
MochiServices.bringToTop();
MochiServices.send("coins_showStore", {options:_arg1}, null, null);
}
public static function addEventListener(_arg1:String, _arg2:Function):void{
_dispatcher.addEventListener(_arg1, _arg2);
}
public static function getUserInfo():void{
MochiServices.send("coins_getUserInfo");
}
public static function hideLoginWidget():void{
MochiServices.send("coins_hideLoginWidget");
}
public static function removeEventListener(_arg1:String, _arg2:Function):void{
_dispatcher.removeEventListener(_arg1, _arg2);
}
public static function showVideo(_arg1:Object=null):void{
if (((!(_arg1)) || (!((typeof(_arg1.item) == "string"))))){
return;
};
MochiServices.bringToTop();
MochiServices.send("coins_showVideo", {options:_arg1}, null, null);
}
}
}//package mochi.as3
Section 243
//MochiDigits (mochi.as3.MochiDigits)
package mochi.as3 {
public final class MochiDigits {
private var Sibling:MochiDigits;
private var Fragment:Number;
private var Encoder:Number;
public function MochiDigits(_arg1:Number=0, _arg2:uint=0):void{
Encoder = 0;
setValue(_arg1, _arg2);
}
public function reencode():void{
var _local1:uint = int((2147483647 * Math.random()));
Fragment = (Fragment ^ (_local1 ^ Encoder));
Encoder = _local1;
}
public function set value(_arg1:Number):void{
setValue(_arg1);
}
public function toString():String{
var _local1:String = String.fromCharCode((Fragment ^ Encoder));
if (Sibling != null){
_local1 = (_local1 + Sibling.toString());
};
return (_local1);
}
public function setValue(_arg1:Number=0, _arg2:uint=0):void{
var _local3:String = _arg1.toString();
var _temp1 = _arg2;
_arg2 = (_arg2 + 1);
Fragment = (_local3.charCodeAt(_temp1) ^ Encoder);
if (_arg2 < _local3.length){
Sibling = new MochiDigits(_arg1, _arg2);
} else {
Sibling = null;
};
reencode();
}
public function get value():Number{
return (Number(this.toString()));
}
public function addValue(_arg1:Number):void{
value = (value + _arg1);
}
}
}//package mochi.as3
Section 244
//MochiEventDispatcher (mochi.as3.MochiEventDispatcher)
package mochi.as3 {
public class MochiEventDispatcher {
private var eventTable:Object;
public function MochiEventDispatcher():void{
eventTable = {};
}
public function triggerEvent(_arg1:String, _arg2:Object):void{
var _local3:Object;
if (eventTable[_arg1] == undefined){
return;
};
for (_local3 in eventTable[_arg1]) {
var _local6 = eventTable[_arg1];
_local6[_local3](_arg2);
};
}
public function removeEventListener(_arg1:String, _arg2:Function):void{
var _local3:Object;
if (eventTable[_arg1] == undefined){
eventTable[_arg1] = [];
return;
};
for (_local3 in eventTable[_arg1]) {
if (eventTable[_arg1][_local3] != _arg2){
} else {
eventTable[_arg1].splice(Number(_local3), 1);
};
};
}
public function addEventListener(_arg1:String, _arg2:Function):void{
removeEventListener(_arg1, _arg2);
eventTable[_arg1].push(_arg2);
}
}
}//package mochi.as3
Section 245
//MochiEvents (mochi.as3.MochiEvents)
package mochi.as3 {
import flash.display.*;
public class MochiEvents {
public static const ALIGN_BOTTOM_LEFT:String = "ALIGN_BL";
public static const FORMAT_LONG:String = "LongForm";
public static const ALIGN_BOTTOM:String = "ALIGN_B";
public static const ACHIEVEMENT_RECEIVED:String = "AchievementReceived";
public static const FORMAT_SHORT:String = "ShortForm";
public static const ALIGN_TOP_RIGHT:String = "ALIGN_TR";
public static const ALIGN_BOTTOM_RIGHT:String = "ALIGN_BR";
public static const ALIGN_TOP:String = "ALIGN_T";
public static const ALIGN_LEFT:String = "ALIGN_L";
public static const ALIGN_RIGHT:String = "ALIGN_R";
public static const ALIGN_TOP_LEFT:String = "ALIGN_TL";
public static const ALIGN_CENTER:String = "ALIGN_C";
private static var _dispatcher:MochiEventDispatcher = new MochiEventDispatcher();
private static var gameStart:Number;
private static var levelStart:Number;
public static function addEventListener(_arg1:String, _arg2:Function):void{
_dispatcher.addEventListener(_arg1, _arg2);
}
public static function removeEventListener(_arg1:String, _arg2:Function):void{
_dispatcher.removeEventListener(_arg1, _arg2);
}
public static function startSession(_arg1:String):void{
MochiServices.send("events_beginSession", {achievementID:_arg1}, null, null);
}
public static function triggerEvent(_arg1:String, _arg2:Object):void{
_dispatcher.triggerEvent(_arg1, _arg2);
}
public static function setNotifications(_arg1:MovieClip, _arg2:Object):void{
var _local4:Object;
var _local3:Object = {};
for (_local4 in _arg2) {
_local3[_local4] = _arg2[_local4];
};
_local3.clip = _arg1;
MochiServices.send("events_setNotifications", _local3, null, null);
}
public static function endGame():void{
var _local1:Number = (new Date().time - gameStart);
trigger("end_game", {time:_local1});
}
public static function startGame():void{
gameStart = new Date().time;
trigger("start_game");
}
public static function trigger(_arg1:String, _arg2:Object=null):void{
if (_arg2 == null){
_arg2 = {};
} else {
if (_arg2["kind"] != undefined){
_arg2["kind"] = _arg1;
};
};
MochiServices.send("events_triggerEvent", {eventObject:_arg2}, null, null);
}
public static function getVersion():String{
return (MochiServices.getVersion());
}
public static function startLevel():void{
levelStart = new Date().time;
trigger("start_level");
}
public static function endLevel():void{
var _local1:Number = (new Date().time - levelStart);
trigger("end_level", {time:_local1});
}
}
}//package mochi.as3
Section 246
//MochiScores (mochi.as3.MochiScores)
package mochi.as3 {
import flash.display.*;
import flash.text.*;
public class MochiScores {
private static var boardID:String;
public static var onErrorHandler:Object;
public static var onCloseHandler:Object;
public static function showLeaderboard(_arg1:Object=null):void{
var n:Number;
var options = _arg1;
if (options != null){
delete options.clip;
MochiServices.setContainer();
MochiServices.bringToTop();
if (options.name != null){
if ((options.name is TextField)){
if (options.name.text.length > 0){
options.name = options.name.text;
};
};
};
if (options.score != null){
if ((options.score is TextField)){
if (options.score.text.length > 0){
options.score = options.score.text;
};
} else {
if ((options.score is MochiDigits)){
options.score = options.score.value;
};
};
n = Number(options.score);
if (isNaN(n)){
} else {
if ((((n == Number.NEGATIVE_INFINITY)) || ((n == Number.POSITIVE_INFINITY)))){
} else {
if (Math.floor(n) != n){
};
options.score = n;
};
};
};
if (options.onDisplay != null){
options.onDisplay();
} else {
if (MochiServices.clip != null){
if ((MochiServices.clip is MovieClip)){
MochiServices.clip.stop();
//unresolved jump
};
};
};
} else {
options = {};
if ((MochiServices.clip is MovieClip)){
MochiServices.clip.stop();
//unresolved jump
};
};
if (options.onClose != null){
onCloseHandler = options.onClose;
} else {
onCloseHandler = function ():void{
if ((MochiServices.clip is MovieClip)){
MochiServices.clip.play();
//unresolved jump
};
};
};
if (options.onError != null){
onErrorHandler = options.onError;
} else {
onErrorHandler = null;
};
if (options.boardID == null){
if (MochiScores.boardID != null){
options.boardID = MochiScores.boardID;
};
};
MochiServices.warnID(options.boardID, true);
MochiServices.send("scores_showLeaderboard", {options:options}, null, onClose);
}
public static function closeLeaderboard():void{
MochiServices.send("scores_closeLeaderboard");
}
public static function getPlayerInfo(_arg1:Object, _arg2:Object=null):void{
MochiServices.send("scores_getPlayerInfo", null, _arg1, _arg2);
}
public static function requestList(_arg1:Object, _arg2:Object=null):void{
MochiServices.send("scores_requestList", null, _arg1, _arg2);
}
public static function scoresArrayToObjects(_arg1:Object):Object{
var _local3:Number;
var _local4:Number;
var _local5:Object;
var _local6:Object;
var _local7:String;
var _local8:String;
var _local2:Object = {};
for (_local7 in _arg1) {
if (typeof(_arg1[_local7]) == "object"){
if (((!((_arg1[_local7].cols == null))) && (!((_arg1[_local7].rows == null))))){
_local2[_local7] = [];
_local5 = _arg1[_local7];
_local4 = 0;
while (_local4 < _local5.rows.length) {
_local6 = {};
_local3 = 0;
while (_local3 < _local5.cols.length) {
_local6[_local5.cols[_local3]] = _local5.rows[_local4][_local3];
_local3++;
};
_local2[_local7].push(_local6);
_local4++;
};
} else {
_local2[_local7] = {};
for (_local8 in _arg1[_local7]) {
_local2[_local7][_local8] = _arg1[_local7][_local8];
};
};
} else {
_local2[_local7] = _arg1[_local7];
};
};
return (_local2);
}
public static function submit(_arg1:Number, _arg2:String, _arg3:Object=null, _arg4:Object=null):void{
_arg1 = Number(_arg1);
if (isNaN(_arg1)){
} else {
if ((((_arg1 == Number.NEGATIVE_INFINITY)) || ((_arg1 == Number.POSITIVE_INFINITY)))){
} else {
if (Math.floor(_arg1) != _arg1){
};
_arg1 = Number(_arg1);
};
};
MochiServices.send("scores_submit", {score:_arg1, name:_arg2}, _arg3, _arg4);
}
public static function onClose(_arg1:Object=null):void{
if (((((_arg1) && ((_arg1.error == true)))) && (onErrorHandler))){
if (_arg1.errorCode == null){
_arg1.errorCode = "IOError";
};
onErrorHandler(_arg1.errorCode);
MochiServices.doClose();
return;
};
onCloseHandler();
MochiServices.doClose();
}
public static function setBoardID(_arg1:String):void{
MochiServices.warnID(_arg1, true);
MochiScores.boardID = _arg1;
MochiServices.send("scores_setBoardID", {boardID:_arg1});
}
}
}//package mochi.as3
Section 247
//MochiServices (mochi.as3.MochiServices)
package mochi.as3 {
import flash.display.*;
import flash.events.*;
import flash.utils.*;
import flash.geom.*;
import flash.net.*;
import flash.system.*;
public class MochiServices {
private static var _container:Object;
private static var _connected:Boolean = false;
private static var _swfVersion:String;
private static var _preserved:Object;
public static var netupAttempted:Boolean = false;
private static var _sendChannel:LocalConnection;
public static var servicesSync:MochiSync = new MochiSync();
private static var _clip:MovieClip;
private static var _id:String;
private static var _services:String = "services.swf";
private static var _servURL:String = "http://www.mochiads.com/static/lib/services/";
public static var widget:Boolean = false;
private static var _timer:Timer;
private static var _sendChannelName:String;
private static var _loader:Loader;
private static var _connecting:Boolean = false;
private static var _mochiLocalConnection:MovieClip;
private static var _listenChannelName:String = "__ms_";
public static var onError:Object;
public static var netup:Boolean = true;
private static var _mochiLC:String = "MochiLC.swf";
public static function isNetworkAvailable():Boolean{
return (!((Security.sandboxType == "localWithFile")));
}
public static function get connected():Boolean{
return (_connected);
}
private static function onReceive(_arg1:Object):void{
var pkg = _arg1;
var cb:String = pkg.callbackID;
var cblst:Object = _clip._callbacks[cb];
if (!cblst){
return;
};
var method:* = cblst.callbackMethod;
var methodName = "";
var obj:Object = cblst.callbackObject;
if (((obj) && ((typeof(method) == "string")))){
methodName = method;
if (obj[method] != null){
method = obj[method];
//unresolved jump
};
};
if (method != undefined){
try {
method.apply(obj, pkg.args);
} catch(error:Error) {
};
} else {
if (obj != null){
try {
obj(pkg.args);
} catch(error:Error) {
};
};
};
delete _clip._callbacks[cb];
}
public static function get childClip():Object{
return (_clip);
}
public static function send(_arg1:String, _arg2:Object=null, _arg3:Object=null, _arg4:Object=null):void{
if (_connected){
_mochiLocalConnection.send(_sendChannelName, "onReceive", {methodName:_arg1, args:_arg2, callbackID:_clip._nextcallbackID});
} else {
if ((((_clip == null)) || (!(_connecting)))){
handleError(_arg2, _arg3, _arg4);
flush(true);
return;
};
_clip._queue.push({methodName:_arg1, args:_arg2, callbackID:_clip._nextcallbackID});
};
if (_clip != null){
if (((!((_clip._callbacks == null))) && (!((_clip._nextcallbackID == null))))){
_clip._callbacks[_clip._nextcallbackID] = {callbackObject:_arg3, callbackMethod:_arg4};
_clip._nextcallbackID++;
};
};
}
private static function init(_arg1:String, _arg2:Object):void{
_id = _arg1;
if (_arg2 != null){
_container = _arg2;
loadCommunicator(_arg1, _container);
};
}
private static function clickMovie(_arg1:String, _arg2:Function):MovieClip{
var _local4:int;
var _local14:Loader;
var _local3:Array = [150, 21, 0, 7, 1, 0, 0, 0, 0, 98, 116, 110, 0, 7, 2, 0, 0, 0, 0, 116, 104, 105, 115, 0, 28, 150, 22, 0, 0, 99, 114, 101, 97, 116, 101, 69, 109, 112, 116, 121, 77, 111, 118, 105, 101, 67, 108, 105, 112, 0, 82, 135, 1, 0, 0, 23, 150, 13, 0, 4, 0, 0, 111, 110, 82, 101, 108, 101, 97, 115, 101, 0, 142, 8, 0, 0, 0, 0, 2, 42, 0, 114, 0, 150, 17, 0, 0, 32, 0, 7, 1, 0, 0, 0, 8, 0, 0, 115, 112, 108, 105, 116, 0, 82, 135, 1, 0, 1, 23, 150, 7, 0, 4, 1, 7, 0, 0, 0, 0, 78, 150, 8, 0, 0, 95, 98, 108, 97, 110, 107, 0, 154, 1, 0, 0, 150, 7, 0, 0, 99, 108, 105, 99, 107, 0, 150, 7, 0, 4, 1, 7, 1, 0, 0, 0, 78, 150, 27, 0, 7, 2, 0, 0, 0, 7, 0, 0, 0, 0, 0, 76, 111, 99, 97, 108, 67, 111, 110, 110, 101, 99, 116, 105, 111, 110, 0, 64, 150, 6, 0, 0, 115, 101, 110, 100, 0, 82, 79, 150, 15, 0, 4, 0, 0, 95, 97, 108, 112, 104, 97, 0, 7, 0, 0, 0, 0, 79, 150, 23, 0, 7, 0xFF, 0, 0xFF, 0, 7, 1, 0, 0, 0, 4, 0, 0, 98, 101, 103, 105, 110, 70, 105, 108, 108, 0, 82, 23, 150, 25, 0, 7, 0, 0, 0, 0, 7, 0, 0, 0, 0, 7, 2, 0, 0, 0, 4, 0, 0, 109, 111, 118, 101, 84, 111, 0, 82, 23, 150, 25, 0, 7, 100, 0, 0, 0, 7, 0, 0, 0, 0, 7, 2, 0, 0, 0, 4, 0, 0, 108, 105, 110, 101, 84, 111, 0, 82, 23, 150, 25, 0, 7, 100, 0, 0, 0, 7, 100, 0, 0, 0, 7, 2, 0, 0, 0, 4, 0, 0, 108, 105, 110, 101, 84, 111, 0, 82, 23, 150, 25, 0, 7, 0, 0, 0, 0, 7, 100, 0, 0, 0, 7, 2, 0, 0, 0, 4, 0, 0, 108, 105, 110, 101, 84, 111, 0, 82, 23, 150, 25, 0, 7, 0, 0, 0, 0, 7, 0, 0, 0, 0, 7, 2, 0, 0, 0, 4, 0, 0, 108, 105, 110, 101, 84, 111, 0, 82, 23, 150, 16, 0, 7, 0, 0, 0, 0, 4, 0, 0, 101, 110, 100, 70, 105, 108, 108, 0, 82, 23];
var _local5:Array = [104, 0, 31, 64, 0, 7, 208, 0, 0, 12, 1, 0, 67, 2, 0xFF, 0xFF, 0xFF, 63, 3];
var _local6:Array = [0, 64, 0, 0, 0];
var _local7:MovieClip = new MovieClip();
var _local8:LocalConnection = new LocalConnection();
var _local9:String = ((("_click_" + Math.floor((Math.random() * 999999))) + "_") + Math.floor(new Date().time));
_local8 = new LocalConnection();
_local7.lc = _local8;
_local7.click = _arg2;
_local8.client = _local7;
_local8.connect(_local9);
var _local10:ByteArray = new ByteArray();
var _local11:ByteArray = new ByteArray();
_local11.endian = Endian.LITTLE_ENDIAN;
_local11.writeShort(1);
_local11.writeUTFBytes(((_arg1 + " ") + _local9));
_local11.writeByte(0);
var _local12:uint = ((_local3.length + _local11.length) + 4);
var _local13:uint = (_local12 + 35);
_local10.endian = Endian.LITTLE_ENDIAN;
_local10.writeUTFBytes("FWS");
_local10.writeByte(8);
_local10.writeUnsignedInt(_local13);
for each (_local4 in _local5) {
_local10.writeByte(_local4);
};
_local10.writeUnsignedInt(_local12);
_local10.writeByte(136);
_local10.writeShort(_local11.length);
_local10.writeBytes(_local11);
for each (_local4 in _local3) {
_local10.writeByte(_local4);
};
for each (_local4 in _local6) {
_local10.writeByte(_local4);
};
_local14 = new Loader();
_local14.loadBytes(_local10);
_local7.addChild(_local14);
return (_local7);
}
public static function stayOnTop():void{
_container.addEventListener(Event.ENTER_FRAME, MochiServices.bringToTop, false, 0, true);
if (_clip != null){
_clip.visible = true;
};
}
public static function addLinkEvent(_arg1:String, _arg2:String, _arg3:DisplayObjectContainer, _arg4:Function=null):void{
var avm1Click:DisplayObject;
var x:String;
var req:URLRequest;
var loader:Loader;
var setURL:Function;
var err:Function;
var complete:Function;
var url = _arg1;
var burl = _arg2;
var btn = _arg3;
var onClick = _arg4;
var vars:Object = new Object();
vars["mav"] = getVersion();
vars["swfv"] = "9";
vars["swfurl"] = btn.loaderInfo.loaderURL;
vars["fv"] = Capabilities.version;
vars["os"] = Capabilities.os;
vars["lang"] = Capabilities.language;
vars["scres"] = ((Capabilities.screenResolutionX + "x") + Capabilities.screenResolutionY);
var s = "?";
var i:Number = 0;
for (x in vars) {
if (i != 0){
s = (s + "&");
};
i = (i + 1);
s = (((s + x) + "=") + escape(vars[x]));
};
req = new URLRequest("http://x.mochiads.com/linkping.swf");
loader = new Loader();
setURL = function (_arg1:String):void{
if (avm1Click){
btn.removeChild(avm1Click);
};
avm1Click = clickMovie(_arg1, onClick);
var _local2:Rectangle = btn.getBounds(btn);
btn.addChild(avm1Click);
avm1Click.x = _local2.x;
avm1Click.y = _local2.y;
avm1Click.scaleX = (0.01 * _local2.width);
avm1Click.scaleY = (0.01 * _local2.height);
};
err = function (_arg1:Object):void{
netup = false;
_arg1.target.removeEventListener(_arg1.type, arguments.callee);
setURL(burl);
};
complete = function (_arg1:Object):void{
_arg1.target.removeEventListener(_arg1.type, arguments.callee);
};
if (netup){
setURL((url + s));
} else {
setURL(burl);
};
if (!((netupAttempted) || (_connected))){
netupAttempted = true;
loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, err);
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, complete);
loader.load(req);
};
}
public static function warnID(_arg1:String, _arg2:Boolean):void{
_arg1 = _arg1.toLowerCase();
if (_arg1.length != 16){
return;
};
if (_arg1 == "1e113c7239048b3f"){
if (_arg2){
//unresolved jump
};
return;
} else {
if (_arg1 == "84993a1de4031cd8"){
if (_arg2){
//unresolved jump
};
return;
};
};
var _local3:Number = 0;
while (_local3 < _arg1.length) {
switch (_arg1.charAt(_local3)){
case "0":
case "1":
case "2":
case "3":
case "4":
case "5":
case "6":
case "7":
case "8":
case "9":
case "a":
case "b":
case "c":
case "d":
case "e":
case "f":
break;
default:
return;
};
_local3++;
};
}
public static function disconnect():void{
if (((_connected) || (_connecting))){
if (_clip != null){
if (_clip.parent != null){
if ((_clip.parent is Sprite)){
Sprite(_clip.parent).removeChild(_clip);
_clip = null;
};
};
};
_connecting = (_connected = false);
flush(true);
try {
_mochiLocalConnection.close();
} catch(error:Error) {
};
};
if (_timer != null){
try {
_timer.stop();
} catch(error:Error) {
};
};
}
public static function allowDomains(_arg1:String):String{
var _local2:String;
if (Security.sandboxType != "application"){
Security.allowDomain("*");
Security.allowInsecureDomain("*");
};
if (_arg1.indexOf("http://") != -1){
_local2 = _arg1.split("/")[2].split(":")[0];
if (Security.sandboxType != "application"){
Security.allowDomain(_local2);
Security.allowInsecureDomain(_local2);
};
};
return (_local2);
}
public static function getVersion():String{
return ("3.3 as3");
}
public static function doClose():void{
_container.removeEventListener(Event.ENTER_FRAME, MochiServices.bringToTop);
}
private static function flush(_arg1:Boolean):void{
var _local2:Object;
var _local3:Object;
if (((_clip) && (_clip._queue))){
while (_clip._queue.length > 0) {
_local2 = _clip._queue.shift();
_local3 = null;
if (_local2 != null){
if (_local2.callbackID != null){
_local3 = _clip._callbacks[_local2.callbackID];
};
delete _clip._callbacks[_local2.callbackID];
if (((_arg1) && (!((_local3 == null))))){
handleError(_local2.args, _local3.callbackObject, _local3.callbackMethod);
};
};
};
};
}
public static function get id():String{
return (_id);
}
private static function onEvent(_arg1:Object):void{
var _local2:String = _arg1.target;
var _local3:String = _arg1.event;
switch (_local2){
case "events":
MochiEvents.triggerEvent(_arg1.event, _arg1.args);
break;
case "coins":
MochiCoins.triggerEvent(_arg1.event, _arg1.args);
break;
case "sync":
servicesSync.triggerEvent(_arg1.event, _arg1.args);
break;
};
}
private static function urlOptions(_arg1:Object):Object{
var _local3:String;
var _local4:Array;
var _local5:Number;
var _local6:Array;
var _local2:Object = {};
if (_arg1.stage){
_local3 = _arg1.stage.loaderInfo.parameters.mochiad_options;
} else {
_local3 = _arg1.loaderInfo.parameters.mochiad_options;
};
if (_local3){
_local4 = _local3.split("&");
_local5 = 0;
while (_local5 < _local4.length) {
_local6 = _local4[_local5].split("=");
_local2[unescape(_local6[0])] = unescape(_local6[1]);
_local5++;
};
};
return (_local2);
}
public static function setContainer(_arg1:Object=null, _arg2:Boolean=true):void{
if (_arg1 != null){
if ((_arg1 is Sprite)){
_container = _arg1;
};
};
if (_arg2){
if ((_container is Sprite)){
Sprite(_container).addChild(_clip);
};
};
}
private static function handleError(_arg1:Object, _arg2:Object, _arg3:Object):void{
var args = _arg1;
var callbackObject = _arg2;
var callbackMethod = _arg3;
if (args != null){
if (args.onError != null){
args.onError.apply(null, ["NotConnected"]);
};
if (((!((args.options == null))) && (!((args.options.onError == null))))){
args.options.onError.apply(null, ["NotConnected"]);
};
};
if (callbackMethod != null){
args = {};
args.error = true;
args.errorCode = "NotConnected";
if (((!((callbackObject == null))) && ((callbackMethod is String)))){
try {
var _local5 = callbackObject;
_local5[callbackMethod](args);
} catch(error:Error) {
};
} else {
if (callbackMethod != null){
try {
callbackMethod.apply(args);
} catch(error:Error) {
};
};
};
};
}
private static function loadError(_arg1:Object):void{
_clip._mochiad_ctr_failed = true;
MochiServices.disconnect();
MochiServices.onError("IOError");
}
private static function initComChannels():void{
if (!_connected){
_connecting = false;
_connected = true;
_mochiLocalConnection.send(_sendChannelName, "onReceive", {methodName:"handshakeDone"});
_mochiLocalConnection.send(_sendChannelName, "onReceive", {methodName:"registerGame", preserved:_preserved, id:_id, clip:_container, version:getVersion(), parentURL:_container.loaderInfo.loaderURL});
_clip.onReceive = onReceive;
_clip.onEvent = onEvent;
_clip.onError = function ():void{
MochiServices.onError("IOError");
};
while (_clip._queue.length > 0) {
_mochiLocalConnection.send(_sendChannelName, "onReceive", _clip._queue.shift());
};
};
}
private static function loadLCBridge(_arg1:Object):void{
var loader:Loader;
var clip = _arg1;
loader = new Loader();
var mochiLCURL:String = (_servURL + _mochiLC);
var req:URLRequest = new URLRequest(mochiLCURL);
var complete:Function = function (_arg1:Object):void{
_mochiLocalConnection = MovieClip(loader.content);
listen();
};
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, complete);
loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, loadError);
loader.load(req);
clip.addChild(loader);
}
private static function listen():void{
_mochiLocalConnection.connect(_listenChannelName);
_clip.handshake = function (_arg1:Object):void{
MochiServices.comChannelName = _arg1.newChannel;
};
}
public static function get clip():Object{
return (_container);
}
public static function set comChannelName(_arg1:String):void{
if (_arg1 != null){
if (_arg1.length > 3){
_sendChannelName = (_arg1 + "_fromgame");
initComChannels();
};
};
}
private static function loadCommunicator(_arg1:String, _arg2:Object):MovieClip{
var _local3:String = ("_mochiservices_com_" + _arg1);
if (_clip != null){
return (_clip);
};
if (!MochiServices.isNetworkAvailable()){
return (null);
};
if (urlOptions(_arg2).servURL){
_servURL = urlOptions(_arg2).servURL;
};
var _local4:String = (_servURL + _services);
if (urlOptions(_arg2).servicesURL){
_local4 = urlOptions(_arg2).servicesURL;
};
_listenChannelName = (_listenChannelName + ((Math.floor(new Date().time) + "_") + Math.floor((Math.random() * 99999))));
MochiServices.allowDomains(_local4);
_clip = createEmptyMovieClip(_arg2, _local3, 10336, false);
loadLCBridge(_clip);
_loader = new Loader();
_loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, loadError);
var _local5:URLRequest = new URLRequest(_local4);
var _local6:URLVariables = new URLVariables();
_local6.listenLC = _listenChannelName;
_local6.mochiad_options = _arg2.loaderInfo.parameters.mochiad_options;
_local6.api_version = getVersion();
if (widget){
_local6.widget = true;
};
_local5.data = _local6;
_loader.load(_local5);
_clip.addChild(_loader);
_clip._mochiservices_com = _loader;
_sendChannel = new LocalConnection();
_clip._queue = [];
_clip._nextcallbackID = 0;
_clip._callbacks = {};
_timer = new Timer(10000, 1);
_timer.addEventListener(TimerEvent.TIMER, connectWait);
_timer.start();
return (_clip);
}
public static function connect(_arg1:String, _arg2:Object, _arg3:Object=null):void{
var id = _arg1;
var clip = _arg2;
var onError = _arg3;
warnID(id, false);
if ((clip is DisplayObject)){
if (((!(_connected)) && ((_clip == null)))){
_connecting = true;
init(id, clip);
};
//unresolved jump
};
if (onError != null){
MochiServices.onError = onError;
} else {
if (MochiServices.onError == null){
MochiServices.onError = function (_arg1:String):void{
};
};
};
}
public static function createEmptyMovieClip(_arg1:Object, _arg2:String, _arg3:Number, _arg4:Boolean=true):MovieClip{
var parent = _arg1;
var name = _arg2;
var depth = _arg3;
var doAdd = _arg4;
var mc:MovieClip = new MovieClip();
if (doAdd){
if (((false) && (depth))){
parent.addChildAt(mc, depth);
} else {
parent.addChild(mc);
};
};
try {
parent[name] = mc;
} catch(e:Error) {
throw (new Error("MochiServices requires a clip that is an instance of a dynamic class. If your class extends Sprite or MovieClip, you must make it dynamic."));
};
mc["_name"] = name;
return (mc);
}
public static function bringToTop(_arg1:Event=null):void{
var e = _arg1;
if (((!((MochiServices.clip == null))) && (!((MochiServices.childClip == null))))){
try {
if (MochiServices.clip.numChildren > 1){
MochiServices.clip.setChildIndex(MochiServices.childClip, (MochiServices.clip.numChildren - 1));
};
} catch(errorObject:Error) {
_container.removeEventListener(Event.ENTER_FRAME, MochiServices.bringToTop);
};
};
}
public static function connectWait(_arg1:TimerEvent):void{
if (!_connected){
_clip._mochiad_ctr_failed = true;
MochiServices.disconnect();
MochiServices.onError("IOError");
};
}
}
}//package mochi.as3
Section 248
//MochiSync (mochi.as3.MochiSync)
package mochi.as3 {
import flash.utils.*;
public dynamic class MochiSync extends Proxy {
private var _syncContainer:Object;
public static var SYNC_PROPERTY:String = "UpdateProperty";
public static var SYNC_REQUEST:String = "SyncRequest";
public function MochiSync():void{
_syncContainer = {};
}
override "http://www.adobe.com/2006/actionscript/flash/proxy"?? function setProperty(_arg1, _arg2):void{
if (_syncContainer[_arg1] == _arg2){
return;
};
var _local3:String = _arg1.toString();
_syncContainer[_local3] = _arg2;
MochiServices.send("sync_propUpdate", {name:_local3, value:_arg2});
}
override "http://www.adobe.com/2006/actionscript/flash/proxy"?? function getProperty(_arg1){
return (_syncContainer[_arg1]);
}
public function triggerEvent(_arg1:String, _arg2:Object):void{
switch (_arg1){
case SYNC_REQUEST:
MochiServices.send("sync_syncronize", _syncContainer);
break;
case SYNC_PROPERTY:
_syncContainer[_arg2.name] = _arg2.value;
break;
};
}
}
}//package mochi.as3
Section 249
//gameEngine (photonstorm.starfish.gameEngine)
package photonstorm.starfish {
import flash.display.*;
import flash.events.*;
public class gameEngine extends Sprite {
private var sfx:soundFX;
private var alreadyPlayed:Boolean;// = false
private var reveal:revealSequence;
private var game:gameLoop;
private var stageRef:Stage;
private var mochiMC:MovieClip;
private var menu:mainMenu;
public function gameEngine():void{
sfx = new soundFX();
game = new gameLoop();
reveal = new revealSequence();
super();
}
private function swapMenu(_arg1:Event):void{
removeChild(menu);
startGame();
}
private function showGameOver(_arg1:Event):void{
game.removeEventListener(gameLoop.GAME_OVER, showGameOver);
reveal.addEventListener(revealSequence.REVEAL_COVERED, swapGame);
reveal.go();
}
private function swapGame(_arg1:Event):void{
removeChild(game);
removeChild(mochiMC);
reveal.removeEventListener(revealSequence.REVEAL_COVERED, swapGame);
playMainMenu(true);
}
private function playMainMenu(_arg1:Boolean=false):void{
addChildAt(menu, 0);
if (alreadyPlayed == false){
menu.init(sfx);
};
menu.addEventListener(mainMenu.MAINMENU_STARTGAME, showReveal, false, 0, true);
if (_arg1){
reveal.wipeOut(menu.go);
} else {
menu.go();
};
}
private function startGame():void{
addChildAt(mochiMC, 0);
addChildAt(game, 0);
if (alreadyPlayed == false){
game.init(stageRef, sfx);
};
game.go(alreadyPlayed);
reveal.removeEventListener(revealSequence.REVEAL_COVERED, swapMenu);
reveal.wipeOutClean();
game.addEventListener(gameLoop.GAME_OVER, showGameOver, false, 0, true);
}
public function init(_arg1:Stage, _arg2:MovieClip, _arg3:Boolean):void{
stageRef = _arg1;
mochiMC = _arg2;
menu = new mainMenu(_arg3);
addEventListener(Event.ADDED_TO_STAGE, startUp);
}
private function showReveal(_arg1:Event):void{
menu.removeEventListener(mainMenu.MAINMENU_STARTGAME, startGame);
reveal.addEventListener(revealSequence.REVEAL_COVERED, swapMenu);
reveal.go();
}
private function startUp(_arg1:Event):void{
removeEventListener(Event.ADDED_TO_STAGE, startUp);
addChild(reveal);
playMainMenu();
}
}
}//package photonstorm.starfish
Section 250
//gameLoop (photonstorm.starfish.gameLoop)
package photonstorm.starfish {
import flash.display.*;
import flash.events.*;
import idv.cjcat.stardust.common.initializers.*;
import idv.cjcat.stardust.common.actions.*;
import flash.utils.*;
import gs.*;
import idv.cjcat.stardust.common.clocks.*;
import idv.cjcat.stardust.twoD.initializers.*;
import idv.cjcat.stardust.twoD.actions.*;
import idv.cjcat.stardust.common.math.*;
import idv.cjcat.stardust.twoD.zones.*;
import idv.cjcat.stardust.twoD.fields.*;
import mochi.as3.*;
import com.coreyoneil.collision.*;
import idv.cjcat.stardust.twoD.emitters.*;
import idv.cjcat.stardust.twoD.renderers.*;
import flash.text.*;
public class gameLoop extends Sprite {
private var level:MovieClip;
private var sfx:soundFX;
private var currentLevel:int;
private var timerText:TextField;
private var starFishText:TextField;
private var mouseOver:Boolean;// = false
private var muteButton:MovieClip;
private var levelIndex:int;
private var countdown:int;
private var utils:globalUtils;
private var starfishTotal:int;
private var stageRef:Stage;
private var background:MovieClip;
private var othergames:MovieClip;
private var help:MovieClip;
private var renderer:DisplayObjectRenderer;
private var timer:int;
private var foregroundLeaderboard:MovieClip;
private var foreground:MovieClip;
private var player:MovieClip;
private var playerSpeed:Number;// = 16
private var bubbles:Sprite;
private var badCollisionList:CollisionList;
private var emitter:Emitter2D;
private var levels:Array;
private var collisionList:CollisionList;
private var starfishThisLevel:int;
public static const GAME_OVER:String = "gameOver";
private static const DEGTORAD:Number = 0.0174532925199433;
private static const RADTODEG:Number = 57.2957795130823;
public function gameLoop(){
utils = new globalUtils();
background = new backgroundMC();
foregroundLeaderboard = new foregroundMC();
foreground = new foregroundIngameMC();
player = new playerFishMC();
othergames = new otherGamesMC();
super();
}
public function angleToCoordinates(_arg1:DisplayObject, _arg2:int, _arg3:int):Number{
var _local4:Number = Math.atan2((_arg3 - _arg1.y), (_arg2 - _arg1.x));
return ((_local4 * RADTODEG));
}
public function init(_arg1:Stage, _arg2:soundFX):void{
stageRef = _arg1;
sfx = _arg2;
background.mouseEnabled = false;
foreground.mouseEnabled = false;
starFishText = TextField(foreground.getChildByName("score"));
timerText = TextField(foreground.getChildByName("timer"));
player.cacheAsBitmap = true;
player.mouseEnabled = false;
player.scaleX = 0.3;
player.scaleY = 0.3;
player.x = 320;
player.y = 200;
muteButton = MovieClip(foreground.getChildByName("muteButton"));
muteButton.mouseEnabled = true;
muteButton.buttonMode = true;
muteButton.useHandCursor = true;
bubbles = new Sprite();
bubbles.mouseEnabled = false;
help = new helpOverlayMC();
levels = new Array();
levels.push(new level01MC());
levels.push(new level02MC());
levels.push(new level03MC());
levels.push(new level04MC());
levels.push(new level05MC());
levels.push(new level06MC());
levels.push(new level07MC());
levels.push(new level08MC());
levels.push(new level09MC());
levels.push(new level10MC());
levels.push(new level11MC());
levels.push(new level12MC());
levels.push(new level13MC());
levels.push(new level14MC());
levels.push(new level15MC());
levels.push(new level16MC());
levels.push(new level17MC());
levels.push(new level18MC());
levels.push(new level19MC());
levels.push(new level20MC());
levels.push(new level21MC());
levels.push(new level22MC());
levels.push(new level23MC());
levels.push(new level24MC());
levels.push(new level25MC());
currentLevel = 0;
parseLevel();
foregroundLeaderboard.mouseEnabled = false;
foregroundLeaderboard.visible = false;
othergames.visible = false;
othergames.x = 120;
othergames.y = 390;
addChild(background);
addChild(bubbles);
addChild(level);
addChild(player);
addChild(foregroundLeaderboard);
addChild(foreground);
addChild(help);
addChild(othergames);
levelIndex = getChildIndex(level);
}
private function toggleMute(_arg1:MouseEvent):void{
if (sfx.isMuted){
sfx.unMute();
muteButton.gotoAndPlay(1);
} else {
sfx.mute();
muteButton.gotoAndPlay(2);
};
}
private function kickIt(_arg1:Event):void{
help.removeEventListener(MouseEvent.CLICK, kickIt);
TweenMax.to(help, 0.5, {autoAlpha:0});
addEventListener(Event.ENTER_FRAME, mainLoop);
}
private function bubbleMachine():void{
emitter = new Emitter2D(new SteadyClock(0.5));
renderer = new DisplayObjectRenderer(bubbles);
renderer.addEmitter(emitter);
var _local1:DisplayObjectClass = new DisplayObjectClass(bubbleMC);
var _local2:Position = new Position(new Line(10, 480, 630, 480));
var _local3:Velocity = new Velocity(new SinglePoint(0, -1));
var _local4:Alpha = new Alpha(new UniformRandom(0.3, 0.2));
var _local5:Scale = new Scale(new UniformRandom(0.5, 0.3));
emitter.addInitializer(_local4);
emitter.addInitializer(_local5);
emitter.addInitializer(_local1);
emitter.addInitializer(_local2);
emitter.addInitializer(_local3);
var _local6:Move = new Move();
var _local7:DeathZone = new DeathZone(new RectZone(-32, 0, 672, 500), true);
var _local8:RandomDrift = new RandomDrift(0.2, 0.4);
var _local9:Gravity = new Gravity();
_local9.addField(new UniformField(0, -0.1));
emitter.addAction(_local9);
emitter.addAction(_local6);
emitter.addAction(_local7);
emitter.addAction(_local8);
}
public function angleToObject(_arg1:DisplayObject, _arg2:Boolean=true):Number{
var _local3:Number = Math.atan2((mouseY - _arg1.y), (mouseX - _arg1.x));
if (_arg2){
return ((_local3 * RADTODEG));
};
return (_local3);
}
private function parseLevel(_arg1:Boolean=false):void{
var _local2:int;
var _local3:int;
level = utils.duplicateMovieClip(levels[currentLevel]);
level.cacheAsBitmap = true;
starfishThisLevel = 0;
collisionList = new CollisionList(player);
badCollisionList = new CollisionList(player);
var _local4:int;
while (_local4 < level.numChildren) {
if (level.getChildAt(_local4) != null){
switch (level.getChildAt(_local4).name){
case "playerStart":
_local2 = MovieClip(level.getChildAt(_local4)).x;
_local3 = MovieClip(level.getChildAt(_local4)).y;
MovieClip(level.getChildAt(_local4)).visible = false;
break;
case "starfish":
level.getChildAt(_local4).cacheAsBitmap = true;
collisionList.addItem(level.getChildAt(_local4));
starfishThisLevel++;
break;
default:
level.getChildAt(_local4).cacheAsBitmap = true;
badCollisionList.addItem(level.getChildAt(_local4));
break;
};
};
_local4++;
};
if (_arg1){
player.rotation = angleToCoordinates(player, _local2, _local3);
if ((((((player.rotation >= -180)) && ((player.rotation <= -90)))) || ((((player.rotation <= 180)) && ((player.rotation >= 90)))))){
if (player.scaleY == 0.3){
player.scaleY = -0.3;
};
} else {
if (player.scaleY == -0.3){
player.scaleY = 0.3;
};
};
TweenMax.to(player, 2, {x:_local2, y:_local3});
} else {
player.x = _local2;
player.y = _local3;
};
}
public function asRadians(_arg1:Number):Number{
return ((_arg1 * DEGTORAD));
}
private function randomizeArray(_arg1:Array):Array{
var _local2:Array = new Array();
while (_arg1.length > 0) {
_local2.push(_arg1.splice(Math.floor((Math.random() * _arg1.length)), 1));
};
return (_local2);
}
public function distanceToObject(_arg1:DisplayObject, _arg2:Boolean=true):Number{
var _local3:Number = (_arg1.x - mouseX);
var _local4:Number = (_arg1.y - mouseY);
var _local5:Number = Math.sqrt(((_local3 * _local3) + (_local4 * _local4)));
if (_arg2){
return (Math.round(_local5));
};
return (_local5);
}
private function timeFormat(_arg1:uint):String{
var _local2:int;
var _local3:int;
var _local4:int;
var _local5:String;
if (_arg1 > 6000){
_local3 = Math.floor((_arg1 / 60));
_local4 = (_arg1 - (_local3 * 60));
_local5 = (_local3.toString() + ":");
} else {
if (_arg1 > 600){
_local3 = Math.floor((_arg1 / 60));
_local4 = (_arg1 - (_local3 * 60));
_local5 = (_local3.toString() + ":");
} else {
if ((((_arg1 >= 60)) && ((_arg1 < 600)))){
_local3 = Math.floor((_arg1 / 60));
_local4 = (_arg1 - (_local3 * 60));
_local5 = (("0" + _local3.toString()) + ":");
} else {
_local4 = _arg1;
_local5 = "00:";
};
};
};
if (_local4 < 10){
_local5 = _local5.concat("0");
};
_local5 = _local5.concat(_local4.toString());
return (_local5);
}
private function showLeaderboard():void{
foregroundLeaderboard.visible = true;
foreground.visible = false;
othergames.visible = true;
var o:Object = {n:[5, 0, 4, 12, 13, 14, 10, 12, 10, 15, 2, 3, 4, 3, 9, 15], f:function (_arg1:Number, _arg2:String):String{
if (_arg2.length == 16){
return (_arg2);
};
return (this.f((_arg1 + 1), (_arg2 + this.n[_arg1].toString(16))));
}};
var boardID:String = o.f(0, "");
MochiScores.showLeaderboard({boardID:boardID, score:starfishTotal, onClose:afterScoreSubmit, onError:afterScoreSubmit});
}
private function startLevel():void{
addEventListener(MouseEvent.CLICK, startLevelClick);
}
private function afterScoreSubmit(_arg1=false):void{
removeChild(level);
removeEventListener(Event.ENTER_FRAME, emitter.step);
othergames.visible = false;
dispatchEvent(new Event(GAME_OVER));
}
private function stopListening():void{
stage.removeEventListener(MouseEvent.MOUSE_OVER, function (_arg1){
mouseOver = true;
});
stage.removeEventListener(MouseEvent.MOUSE_OUT, function (_arg1){
mouseOver = false;
});
stage.removeEventListener(Event.MOUSE_LEAVE, function (_arg1){
mouseOver = false;
});
muteButton.removeEventListener(MouseEvent.CLICK, toggleMute);
removeEventListener(Event.ENTER_FRAME, mainLoop);
}
private function levelComplete():void{
removeEventListener(Event.ENTER_FRAME, mainLoop);
level.visible = false;
removeChild(level);
collisionList.dispose();
badCollisionList.dispose();
currentLevel++;
if (currentLevel >= levels.length){
currentLevel = 0;
};
parseLevel(true);
addChildAt(level, levelIndex);
countdown = (countdown + 10);
timerText.text = ("time: " + timeFormat(countdown));
TweenMax.to(level, 0, {blurFilter:{blurX:32, blurY:32}});
TweenMax.to(level, 2, {blurFilter:{blurX:0, blurY:0, delay:0.2}, onComplete:startLevel});
level.visible = true;
}
public function go(_arg1:Boolean):void{
player.rotation = 0;
player.scaleX = 0.3;
player.scaleY = 0.3;
player.filters = [];
foregroundLeaderboard.visible = false;
foreground.visible = true;
TweenMax.to(player, 0, {blurFilter:{blurX:0, blurY:0}});
if (sfx.isMuted){
muteButton.gotoAndStop(2);
} else {
muteButton.gotoAndStop(1);
};
currentLevel = 0;
if (_arg1){
parseLevel();
};
bubbleMachine();
starfishTotal = 0;
countdown = (levels.length * 8);
timerText.text = ("time: " + timeFormat(countdown));
timer = (getTimer() + 1000);
help.alpha = 1;
help.visible = true;
startListening();
}
private function startLevelClick(_arg1:MouseEvent):void{
removeEventListener(MouseEvent.CLICK, startLevelClick);
addEventListener(Event.ENTER_FRAME, mainLoop);
}
private function levelQuit(_arg1:Event):void{
dispatchEvent(new Event(GAME_OVER));
}
private function gameOver():void{
timerText.text = "time: 0";
TweenMax.to(level, 2, {blurFilter:{blurX:32, blurY:32}});
TweenMax.to(player, 2, {blurFilter:{blurX:32, blurY:32}, onComplete:showLeaderboard});
collisionList.dispose();
badCollisionList.dispose();
stopListening();
}
private function startListening():void{
stage.addEventListener(MouseEvent.MOUSE_OVER, function (_arg1){
mouseOver = true;
});
stage.addEventListener(MouseEvent.MOUSE_OUT, function (_arg1){
mouseOver = false;
});
stage.addEventListener(Event.MOUSE_LEAVE, function (_arg1){
mouseOver = false;
});
muteButton.addEventListener(MouseEvent.CLICK, toggleMute);
help.addEventListener(MouseEvent.CLICK, kickIt);
addEventListener(Event.ENTER_FRAME, emitter.step);
}
private function mainLoop(_arg1:Event):void{
var _local5:Number;
var _local6:Object;
var _local7:MovieClip;
var _local8:MovieClip;
var _local2:Boolean;
timerText.text = ("time: " + timeFormat(countdown));
starFishText.text = starfishTotal.toString();
if (getTimer() > timer){
timer = (getTimer() + 1000);
countdown = (countdown - 1);
};
if (mouseOver){
player.rotation = angleToObject(player);
if ((((((player.rotation >= -180)) && ((player.rotation <= -90)))) || ((((player.rotation <= 180)) && ((player.rotation >= 90)))))){
if (player.scaleY == 0.3){
player.scaleY = -0.3;
};
} else {
if (player.scaleY == -0.3){
player.scaleY = 0.3;
};
};
};
if (player.hitTestPoint(mouseX, mouseY, false) == false){
if (distanceToObject(player) > 150){
player.x = (player.x + (Math.cos((player.rotation * 0.0174532925199433)) * playerSpeed));
player.y = (player.y + (Math.sin((player.rotation * 0.0174532925199433)) * playerSpeed));
} else {
_local5 = (distanceToObject(player) / (150 / playerSpeed));
if (_local5 > 0.5){
player.x = (player.x + (Math.cos((player.rotation * 0.0174532925199433)) * _local5));
player.y = (player.y + (Math.sin((player.rotation * 0.0174532925199433)) * _local5));
};
};
};
var _local3:Array = collisionList.checkCollisions();
var _local4:int;
while (_local4 < _local3.length) {
_local6 = _local3[_local4];
starfishThisLevel--;
starfishTotal++;
_local7 = new scorePopMC();
_local7.cacheAsBitmap = true;
_local7.mouseEnabled = false;
_local7.x = player.x;
_local7.y = player.y;
level.addChild(_local7);
sfx.playEffectBubbles();
TweenMax.to(_local7, 0.5, {y:"-200", autoAlpha:0});
if (_local6.object1 == player){
TweenMax.to(MovieClip(_local6.object2), 0.5, {scaleX:0, scaleY:0, autoAlpha:0, delay:0.1});
collisionList.removeItem(_local6.object2);
} else {
TweenMax.to(MovieClip(_local6.object1), 0.5, {scaleX:0, scaleY:0, autoAlpha:0, delay:0.1});
collisionList.removeItem(_local6.object1);
};
if (starfishThisLevel <= 0){
_local2 = true;
break;
};
_local4++;
};
_local3 = badCollisionList.checkCollisions();
_local4 = 0;
while (_local4 < _local3.length) {
_local6 = _local3[_local4];
countdown = (countdown - 50);
_local8 = new impactPopMC();
_local8.cacheAsBitmap = true;
_local8.mouseEnabled = false;
_local8.x = player.x;
_local8.y = player.y;
level.addChild(_local8);
sfx.playEffectCollision();
TweenMax.to(_local8, 1.4, {y:"200", autoAlpha:0});
if (_local6.object1 == player){
TweenMax.to(MovieClip(_local6.object2), 0.8, {scaleX:2, scaleY:2, autoAlpha:0});
badCollisionList.removeItem(_local6.object2);
} else {
TweenMax.to(MovieClip(_local6.object1), 0.8, {scaleX:2, scaleY:2, autoAlpha:0});
badCollisionList.removeItem(_local6.object1);
};
_local4++;
};
if (countdown <= 0){
gameOver();
};
if (_local2){
levelComplete();
};
}
}
}//package photonstorm.starfish
Section 251
//globalUtils (photonstorm.starfish.globalUtils)
package photonstorm.starfish {
import flash.display.*;
import flash.utils.*;
import flash.geom.*;
public class globalUtils {
public function duplicateSprite(_arg1:DisplayObject):Sprite{
var _local4:Rectangle;
var _local2:Class = Object(_arg1).constructor;
var _local3:DisplayObject = new (_local2);
_local3.transform = _arg1.transform;
_local3.filters = _arg1.filters;
_local3.cacheAsBitmap = _arg1.cacheAsBitmap;
_local3.opaqueBackground = _arg1.opaqueBackground;
if (_arg1.scale9Grid){
_local4 = _arg1.scale9Grid;
_local3.scale9Grid = _local4;
};
return (Sprite(_local3));
}
public function createMovieClipFromLinkageValue(_arg1:String):MovieClip{
var libraryReference:Class;
var linkageValue = _arg1;
try {
libraryReference = (getDefinitionByName(linkageValue) as Class);
} catch(error:ReferenceError) {
};
if (libraryReference){
return (new (libraryReference));
};
return (new MovieClip());
}
public function duplicateMovieClip(_arg1:DisplayObject):MovieClip{
var _local4:Rectangle;
var _local2:Class = Object(_arg1).constructor;
var _local3:DisplayObject = new (_local2);
_local3.transform = _arg1.transform;
_local3.filters = _arg1.filters;
_local3.cacheAsBitmap = _arg1.cacheAsBitmap;
_local3.opaqueBackground = _arg1.opaqueBackground;
if (_arg1.scale9Grid){
_local4 = _arg1.scale9Grid;
_local3.scale9Grid = _local4;
};
return (MovieClip(_local3));
}
public function duplicateDisplayObject(_arg1:DisplayObject, _arg2:Boolean=false):DisplayObject{
var _local5:Rectangle;
var _local3:Class = Object(_arg1).constructor;
var _local4:DisplayObject = new (_local3);
_local4.transform = _arg1.transform;
_local4.filters = _arg1.filters;
_local4.cacheAsBitmap = _arg1.cacheAsBitmap;
_local4.opaqueBackground = _arg1.opaqueBackground;
if (_arg1.scale9Grid){
_local5 = _arg1.scale9Grid;
_local4.scale9Grid = _local5;
};
if (((_arg2) && (_arg1.parent))){
_arg1.parent.addChild(_local4);
};
return (_local4);
}
}
}//package photonstorm.starfish
Section 252
//mainMenu (photonstorm.starfish.mainMenu)
package photonstorm.starfish {
import flash.display.*;
import flash.events.*;
import idv.cjcat.stardust.common.initializers.*;
import idv.cjcat.stardust.common.actions.*;
import idv.cjcat.stardust.common.clocks.*;
import idv.cjcat.stardust.twoD.initializers.*;
import idv.cjcat.stardust.twoD.actions.*;
import idv.cjcat.stardust.common.math.*;
import idv.cjcat.stardust.twoD.zones.*;
import idv.cjcat.stardust.twoD.deflectors.*;
import idv.cjcat.stardust.twoD.fields.*;
import idv.cjcat.stardust.twoD.emitters.*;
import idv.cjcat.stardust.twoD.renderers.*;
import flash.net.*;
public class mainMenu extends Sprite {
private var container:Sprite;
private var renderer:DisplayObjectRenderer;
public var level:uint;
private var sfx:soundFX;
private var showKaiser:Boolean;// = false
private var deflektor:CircleDeflector;
private var menu:MovieClip;
private var player:MovieClip;
private var moreGamesURL:String;// = "http://www.photonstorm.com/gamedata/starfish.php"
private var playerSpeed:Number;// = 10
private var kibaGamesURL:String;// = "http://www.kibagames.com"
private var background:MovieClip;
private var sponsorURL:String;// = "http://www.photonstorm.com/gamedata/starfish.php?d=sponsor"
private var emitter:Emitter2D;
public static const MAINMENU_STARTGAME:String = "mainMenuStartGame";
private static const RADTODEG:Number = 57.2957795130823;
public function mainMenu(_arg1:Boolean):void{
player = new playerFishMC();
background = new backgroundMC();
super();
showKaiser = _arg1;
}
public function init(_arg1:soundFX):void{
sfx = _arg1;
player.cacheAsBitmap = true;
player.mouseEnabled = false;
player.scaleX = 0.3;
player.scaleY = 0.3;
player.x = 320;
player.y = 200;
menu = new mainMenuMC();
menu.showKaiser = showKaiser;
}
private function mainLoop(_arg1:Event):void{
var _local2:Number;
emitter.step();
deflektor.x = player.x;
deflektor.y = player.y;
player.rotation = angleToObject(player);
if ((((((player.rotation >= -180)) && ((player.rotation <= -90)))) || ((((player.rotation <= 180)) && ((player.rotation >= 90)))))){
if (player.scaleY == 0.3){
player.scaleY = -0.3;
};
} else {
if (player.scaleY == -0.3){
player.scaleY = 0.3;
};
};
if (player.hitTestPoint(mouseX, mouseY, false) == false){
if (distanceToObject(player) > 150){
player.x = (player.x + (Math.cos((player.rotation * 0.0174532925199433)) * playerSpeed));
player.y = (player.y + (Math.sin((player.rotation * 0.0174532925199433)) * playerSpeed));
} else {
_local2 = (distanceToObject(player) / (150 / playerSpeed));
if (_local2 > 0.5){
player.x = (player.x + (Math.cos((player.rotation * 0.0174532925199433)) * _local2));
player.y = (player.y + (Math.sin((player.rotation * 0.0174532925199433)) * _local2));
};
};
};
}
private function showCredits(_arg1:Event):void{
sfx.playEffectMenuClick();
menu.gotoAndPlay("credits_on");
}
private function bubbleMachine():void{
emitter = new Emitter2D(new SteadyClock(1));
container = new Sprite();
container.mouseEnabled = false;
renderer = new DisplayObjectRenderer(container);
renderer.addEmitter(emitter);
deflektor = new CircleDeflector(0, 0, 32);
deflektor.bounce = 0;
var _local1:Deflect = new Deflect();
_local1.addDeflector(deflektor);
var _local2:DisplayObjectClass = new DisplayObjectClass(bubbleMC);
var _local3:Position = new Position(new Line(10, 480, 630, 480));
var _local4:Velocity = new Velocity(new SinglePoint(0, -3));
var _local5:Alpha = new Alpha(new UniformRandom(0.5, 0.3));
var _local6:Scale = new Scale(new UniformRandom(0.5, 0.3));
emitter.addInitializer(_local5);
emitter.addInitializer(_local6);
emitter.addInitializer(_local2);
emitter.addInitializer(_local3);
emitter.addInitializer(_local4);
var _local7:Gravity = new Gravity();
_local7.addField(new UniformField(0, -0.1));
emitter.addAction(_local7);
var _local8:Move = new Move();
var _local9:DeathZone = new DeathZone(new RectZone(-32, 0, 672, 500), true);
var _local10:RandomDrift = new RandomDrift(0.2, 0.4);
emitter.addAction(_local1);
emitter.addAction(new Age(1));
emitter.addAction(_local8);
emitter.addAction(_local9);
emitter.addAction(_local10);
}
private function kibaGames(_arg1:Event):void{
sfx.playEffectMenuClick();
navigateToURL(new URLRequest(kibaGamesURL), "_blank");
}
public function angleToObject(_arg1:DisplayObject, _arg2:Boolean=true):Number{
var _local3:Number = Math.atan2((mouseY - _arg1.y), (mouseX - _arg1.x));
if (_arg2){
return ((_local3 * RADTODEG));
};
return (_local3);
}
public function go(_arg1:Boolean=false):void{
bubbleMachine();
sfx.playMusic();
menu.addEventListener("startGame", startGame, false, 0, true);
menu.addEventListener("showCredits", showCredits, false, 0, true);
menu.addEventListener("kibaGames", kibaGames, false, 0, true);
menu.addEventListener("showMoreGames", showMoreGames, false, 0, true);
menu.addEventListener("openSponsorPage", openSponsorPage, false, 0, true);
addChild(background);
addChild(container);
addChild(player);
addChild(menu);
if (_arg1){
menu.gotoAndPlay(15);
player.visible = true;
} else {
menu.gotoAndPlay("start");
};
addEventListener(Event.ENTER_FRAME, mainLoop);
}
private function showMoreGames(_arg1:Event):void{
sfx.playEffectMenuClick();
navigateToURL(new URLRequest(moreGamesURL), "_blank");
}
public function distanceToObject(_arg1:DisplayObject, _arg2:Boolean=true):Number{
var _local3:Number = (_arg1.x - mouseX);
var _local4:Number = (_arg1.y - mouseY);
var _local5:Number = Math.sqrt(((_local3 * _local3) + (_local4 * _local4)));
if (_arg2){
return (Math.round(_local5));
};
return (_local5);
}
private function openSponsorPage(_arg1:Event):void{
sfx.playEffectMenuClick();
navigateToURL(new URLRequest(sponsorURL), "_blank");
}
private function startGame(_arg1:Event):void{
menu.gotoAndStop(15);
player.visible = false;
emitter.active = false;
sfx.playEffectMenuClick();
removeEventListener(Event.ENTER_FRAME, mainLoop);
menu.removeEventListener("startGame", startGame);
menu.removeEventListener("showCredits", showCredits);
menu.removeEventListener("showMoreGames", showMoreGames);
menu.removeEventListener("openSponsorPage", openSponsorPage);
dispatchEvent(new Event(mainMenu.MAINMENU_STARTGAME));
}
}
}//package photonstorm.starfish
Section 253
//revealSequence (photonstorm.starfish.revealSequence)
package photonstorm.starfish {
import flash.display.*;
import flash.events.*;
import gs.*;
public class revealSequence extends Sprite {
public static const REVEAL_DONE:String = "revealDone";
public static const REVEAL_COVERED:String = "revealCovered";
public function go():void{
var _local1:MovieClip;
var _local4:int;
var _local5:Number;
var _local2:Number = 0;
var _local3 = -32;
while (_local3 < 500) {
_local4 = -32;
while (_local4 < 680) {
if (Math.random() > 0.5){
_local1 = new yellowClamMC();
} else {
_local1 = new pinkClamMC();
};
_local1.isDaisy = true;
_local1.cacheAsBitmap = true;
_local1.x = (_local4 + (Math.random() * 32));
_local1.y = (_local3 + (Math.random() * 32));
_local1.scaleX = 0;
_local1.scaleY = 0;
addChild(_local1);
_local5 = (1.8 + (Math.random() / 2));
TweenMax.to(_local1, 0.1, {scaleX:_local5, scaleY:_local5, delay:_local2});
_local2 = (_local2 + 0.1);
_local4 = (_local4 + 56);
};
_local2 = 0;
_local3 = (_local3 + 56);
};
TweenMax.delayedCall(1.5, sendSignal);
}
public function wipeOutClean():void{
var _local1:Number = 0;
var _local2:uint;
while (_local2 < this.numChildren) {
if (MovieClip(getChildAt(_local2)).isDaisy){
TweenMax.to((getChildAt(_local2) as MovieClip), 0.3, {alpha:0.1, scaleX:0, scaleY:0, delay:_local1, onComplete:tidyUp, onCompleteParams:[(getChildAt(_local2) as MovieClip)]});
if ((_local2 % 8) == 0){
_local1 = (_local1 + 0.1);
};
};
_local2++;
};
}
private function tidyUp(_arg1:MovieClip):void{
removeChild(_arg1);
}
public function wipeOut(_arg1:Function):void{
var _local2:Number = 0;
var _local3:uint;
while (_local3 < this.numChildren) {
if (MovieClip(getChildAt(_local3)).isDaisy){
TweenMax.to((getChildAt(_local3) as MovieClip), 0.3, {alpha:0.1, scaleX:0, scaleY:0, delay:_local2, onComplete:tidyUp, onCompleteParams:[(getChildAt(_local3) as MovieClip)]});
if ((_local3 % 8) == 0){
_local2 = (_local2 + 0.1);
};
};
_local3++;
};
TweenMax.delayedCall(_local2, _arg1, [true]);
}
private function sendSignal():void{
dispatchEvent(new Event(REVEAL_COVERED));
}
}
}//package photonstorm.starfish
Section 254
//soundFX (photonstorm.starfish.soundFX)
package photonstorm.starfish {
import flash.display.*;
import flash.media.*;
public class soundFX extends Sprite {
private var musicIntro:Sound;
private var globalTransform:SoundTransform;
private var effectBubbles:Sound;
public var musicPlaying:Boolean;// = false
private var musicChannel:SoundChannel;
private var effectMenuClick:Sound;
private var effectCollision:Sound;
private var effectsChannel:SoundChannel;
public var fxPlaying:Boolean;// = false
private static var soundMuted:Boolean = false;
public function soundFX(){
musicIntro = new gameMusic();
effectMenuClick = new menuClickFX();
effectCollision = new collisionFX();
effectBubbles = new bubblesFX();
musicChannel = new SoundChannel();
effectsChannel = new SoundChannel();
globalTransform = new SoundTransform();
super();
}
public function stopMusic():void{
musicChannel.stop();
musicPlaying = false;
}
public function playEffectMenuClick():void{
if (soundMuted == false){
effectsChannel = effectMenuClick.play(0, 0);
globalTransform.volume = 1;
effectsChannel.soundTransform = globalTransform;
};
}
public function playEffectCollision():void{
if (soundMuted == false){
effectsChannel = effectCollision.play(0, 0);
globalTransform.volume = 1;
effectsChannel.soundTransform = globalTransform;
};
}
public function playMusic():void{
if ((((soundMuted == false)) && ((musicPlaying == false)))){
musicChannel = musicIntro.play(0, int.MAX_VALUE);
globalTransform.volume = 1;
musicChannel.soundTransform = globalTransform;
musicPlaying = true;
};
}
public function muteToggle():void{
if (soundMuted){
unMute();
} else {
mute();
};
}
public function playEffectBubbles():void{
if (soundMuted == false){
effectsChannel = effectBubbles.play(0, 0);
globalTransform.volume = 1;
effectsChannel.soundTransform = globalTransform;
};
}
public function mute():void{
soundMuted = true;
globalTransform.volume = 0;
musicChannel.soundTransform = globalTransform;
effectsChannel.soundTransform = globalTransform;
}
public function unMute():void{
soundMuted = false;
globalTransform.volume = 1;
musicChannel.soundTransform = globalTransform;
effectsChannel.soundTransform = globalTransform;
}
public function get isMuted():Boolean{
return (soundMuted);
}
}
}//package photonstorm.starfish
Section 255
//button1_65 (StarFish_fla.button1_65)
package StarFish_fla {
import flash.display.*;
import flash.accessibility.*;
import flash.errors.*;
import flash.events.*;
import flash.filters.*;
import flash.geom.*;
import flash.media.*;
import flash.net.*;
import flash.system.*;
import flash.text.*;
import flash.ui.*;
import flash.utils.*;
public dynamic class button1_65 extends MovieClip {
public function button1_65(){
addFrameScript(0, frame1, 1, frame2);
}
function frame1(){
stop();
}
function frame2(){
stop();
}
}
}//package StarFish_fla
Section 256
//button2_66 (StarFish_fla.button2_66)
package StarFish_fla {
import flash.display.*;
import flash.accessibility.*;
import flash.errors.*;
import flash.events.*;
import flash.filters.*;
import flash.geom.*;
import flash.media.*;
import flash.net.*;
import flash.system.*;
import flash.text.*;
import flash.ui.*;
import flash.utils.*;
public dynamic class button2_66 extends MovieClip {
public function button2_66(){
addFrameScript(0, frame1, 1, frame2);
}
function frame1(){
stop();
}
function frame2(){
stop();
}
}
}//package StarFish_fla
Section 257
//button3_67 (StarFish_fla.button3_67)
package StarFish_fla {
import flash.display.*;
import flash.accessibility.*;
import flash.errors.*;
import flash.events.*;
import flash.filters.*;
import flash.geom.*;
import flash.media.*;
import flash.net.*;
import flash.system.*;
import flash.text.*;
import flash.ui.*;
import flash.utils.*;
public dynamic class button3_67 extends MovieClip {
public function button3_67(){
addFrameScript(0, frame1, 1, frame2);
}
function frame1(){
stop();
}
function frame2(){
stop();
}
}
}//package StarFish_fla
Section 258
//backgroundMC (backgroundMC)
package {
import flash.display.*;
public dynamic class backgroundMC extends MovieClip {
}
}//package
Section 259
//bubbleMC (bubbleMC)
package {
import flash.display.*;
public dynamic class bubbleMC extends MovieClip {
}
}//package
Section 260
//bubblesFX (bubblesFX)
package {
import flash.media.*;
public dynamic class bubblesFX extends Sound {
}
}//package
Section 261
//buttonMuteMC (buttonMuteMC)
package {
import flash.display.*;
import flash.events.*;
import flash.utils.*;
import flash.geom.*;
import flash.filters.*;
import flash.media.*;
import flash.text.*;
import flash.net.*;
import flash.errors.*;
import flash.system.*;
import flash.accessibility.*;
import flash.ui.*;
public dynamic class buttonMuteMC extends MovieClip {
public function buttonMuteMC(){
addFrameScript(0, frame1, 1, frame2);
}
function frame1(){
stop();
}
function frame2(){
stop();
}
}
}//package
Section 262
//collisionFX (collisionFX)
package {
import flash.media.*;
public dynamic class collisionFX extends Sound {
}
}//package
Section 263
//daisyMC (daisyMC)
package {
import flash.display.*;
public dynamic class daisyMC extends MovieClip {
}
}//package
Section 264
//foregroundIngameMC (foregroundIngameMC)
package {
import flash.display.*;
import flash.text.*;
public dynamic class foregroundIngameMC extends MovieClip {
public var score:TextField;
public var timer:TextField;
public var muteButton:buttonMuteMC;
}
}//package
Section 265
//foregroundMC (foregroundMC)
package {
import flash.display.*;
public dynamic class foregroundMC extends MovieClip {
}
}//package
Section 266
//gameFrame (gameFrame)
package {
import flash.display.*;
public dynamic class gameFrame extends MovieClip {
}
}//package
Section 267
//gameMusic (gameMusic)
package {
import flash.media.*;
public dynamic class gameMusic extends Sound {
}
}//package
Section 268
//helpOverlayMC (helpOverlayMC)
package {
import flash.display.*;
public dynamic class helpOverlayMC extends MovieClip {
}
}//package
Section 269
//impactPopMC (impactPopMC)
package {
import flash.display.*;
import flash.text.*;
public dynamic class impactPopMC extends MovieClip {
public var score:TextField;
}
}//package
Section 270
//leaf1MC (leaf1MC)
package {
import flash.display.*;
public dynamic class leaf1MC extends MovieClip {
}
}//package
Section 271
//leaf2MC (leaf2MC)
package {
import flash.display.*;
public dynamic class leaf2MC extends MovieClip {
}
}//package
Section 272
//level01MC (level01MC)
package {
import flash.display.*;
public dynamic class level01MC extends MovieClip {
public var playerStart:playerFishMC;
public var starfish:MovieClip;
}
}//package
Section 273
//level02MC (level02MC)
package {
import flash.display.*;
public dynamic class level02MC extends MovieClip {
public var playerStart:playerFishMC;
public var starfish:MovieClip;
}
}//package
Section 274
//level03MC (level03MC)
package {
import flash.display.*;
public dynamic class level03MC extends MovieClip {
public var playerStart:playerFishMC;
public var starfish:MovieClip;
}
}//package
Section 275
//level04MC (level04MC)
package {
import flash.display.*;
public dynamic class level04MC extends MovieClip {
public var playerStart:playerFishMC;
public var starfish:MovieClip;
}
}//package
Section 276
//level05MC (level05MC)
package {
import flash.display.*;
public dynamic class level05MC extends MovieClip {
public var playerStart:playerFishMC;
public var starfish:MovieClip;
}
}//package
Section 277
//level06MC (level06MC)
package {
import flash.display.*;
public dynamic class level06MC extends MovieClip {
public var playerStart:playerFishMC;
public var starfish:MovieClip;
}
}//package
Section 278
//level07MC (level07MC)
package {
import flash.display.*;
public dynamic class level07MC extends MovieClip {
public var playerStart:playerFishMC;
public var starfish:MovieClip;
}
}//package
Section 279
//level08MC (level08MC)
package {
import flash.display.*;
public dynamic class level08MC extends MovieClip {
public var playerStart:playerFishMC;
public var starfish:MovieClip;
}
}//package
Section 280
//level09MC (level09MC)
package {
import flash.display.*;
public dynamic class level09MC extends MovieClip {
public var playerStart:playerFishMC;
public var starfish:MovieClip;
}
}//package
Section 281
//level10MC (level10MC)
package {
import flash.display.*;
public dynamic class level10MC extends MovieClip {
public var playerStart:playerFishMC;
public var starfish:MovieClip;
}
}//package
Section 282
//level11MC (level11MC)
package {
import flash.display.*;
public dynamic class level11MC extends MovieClip {
public var playerStart:playerFishMC;
public var starfish:MovieClip;
}
}//package
Section 283
//level12MC (level12MC)
package {
import flash.display.*;
public dynamic class level12MC extends MovieClip {
public var playerStart:playerFishMC;
public var starfish:MovieClip;
}
}//package
Section 284
//level13MC (level13MC)
package {
import flash.display.*;
public dynamic class level13MC extends MovieClip {
public var playerStart:playerFishMC;
public var starfish:MovieClip;
}
}//package
Section 285
//level14MC (level14MC)
package {
import flash.display.*;
public dynamic class level14MC extends MovieClip {
public var playerStart:playerFishMC;
public var starfish:MovieClip;
}
}//package
Section 286
//level15MC (level15MC)
package {
import flash.display.*;
public dynamic class level15MC extends MovieClip {
public var playerStart:playerFishMC;
public var starfish:MovieClip;
}
}//package
Section 287
//level16MC (level16MC)
package {
import flash.display.*;
public dynamic class level16MC extends MovieClip {
public var playerStart:playerFishMC;
public var starfish:MovieClip;
}
}//package
Section 288
//level17MC (level17MC)
package {
import flash.display.*;
public dynamic class level17MC extends MovieClip {
public var playerStart:playerFishMC;
public var starfish:MovieClip;
}
}//package
Section 289
//level18MC (level18MC)
package {
import flash.display.*;
public dynamic class level18MC extends MovieClip {
public var playerStart:playerFishMC;
public var starfish:MovieClip;
}
}//package
Section 290
//level19MC (level19MC)
package {
import flash.display.*;
public dynamic class level19MC extends MovieClip {
public var playerStart:playerFishMC;
public var starfish:MovieClip;
}
}//package
Section 291
//level20MC (level20MC)
package {
import flash.display.*;
public dynamic class level20MC extends MovieClip {
public var playerStart:playerFishMC;
public var starfish:MovieClip;
}
}//package
Section 292
//level21MC (level21MC)
package {
import flash.display.*;
public dynamic class level21MC extends MovieClip {
public var playerStart:playerFishMC;
public var starfish:MovieClip;
}
}//package
Section 293
//level22MC (level22MC)
package {
import flash.display.*;
public dynamic class level22MC extends MovieClip {
public var playerStart:playerFishMC;
public var starfish:MovieClip;
}
}//package
Section 294
//level23MC (level23MC)
package {
import flash.display.*;
public dynamic class level23MC extends MovieClip {
public var playerStart:playerFishMC;
public var starfish:MovieClip;
}
}//package
Section 295
//level24MC (level24MC)
package {
import flash.display.*;
public dynamic class level24MC extends MovieClip {
public var playerStart:playerFishMC;
public var starfish:MovieClip;
}
}//package
Section 296
//level25MC (level25MC)
package {
import flash.display.*;
public dynamic class level25MC extends MovieClip {
public var playerStart:playerFishMC;
public var starfish:MovieClip;
}
}//package
Section 297
//mainMenuMC (mainMenuMC)
package {
import flash.display.*;
import flash.events.*;
import flash.utils.*;
import flash.geom.*;
import flash.filters.*;
import flash.media.*;
import flash.text.*;
import flash.net.*;
import flash.errors.*;
import flash.system.*;
import flash.accessibility.*;
import flash.ui.*;
public dynamic class mainMenuMC extends MovieClip {
public var button2:MovieClip;
public var button3:MovieClip;
public var foreground:MovieClip;
public var buttonPlay:MovieClip;
public var buttonCredits:MovieClip;
public var showKaiser:Boolean;
public var buttonMoreGames:MovieClip;
public var kiba:SimpleButton;
public var bubbles:MovieClip;
public var logo:SimpleButton;
public var button1:MovieClip;
public function mainMenuMC(){
addFrameScript(0, frame1, 29, frame30, 54, frame55, 69, frame70);
}
function frame30(){
stop();
foreground = MovieClip(getChildAt(6));
foreground.mouseEnabled = false;
logo = SimpleButton(getChildAt(5));
logo.addEventListener(MouseEvent.CLICK, showMoreGames);
kiba.addEventListener(MouseEvent.CLICK, kibaGames);
if (showKaiser == false){
kiba.visible = false;
};
button1 = MovieClip(getChildAt(2));
button2 = MovieClip(getChildAt(3));
button3 = MovieClip(getChildAt(4));
button1.useHandCursor = true;
button1.buttonMode = true;
button2.useHandCursor = true;
button2.buttonMode = true;
button3.useHandCursor = true;
button3.buttonMode = true;
button1.addEventListener(MouseEvent.MOUSE_OVER, mouseOverButton, false, 0, true);
button1.addEventListener(MouseEvent.MOUSE_OUT, mouseOutButton, false, 0, true);
button1.addEventListener(MouseEvent.CLICK, startGame, false, 0, true);
button2.addEventListener(MouseEvent.MOUSE_OVER, mouseOverButton, false, 1, true);
button2.addEventListener(MouseEvent.MOUSE_OUT, mouseOutButton, false, 1, true);
button2.addEventListener(MouseEvent.CLICK, showCredits, false, 0, true);
button3.addEventListener(MouseEvent.MOUSE_OVER, mouseOverButton, false, 0, true);
button3.addEventListener(MouseEvent.MOUSE_OUT, mouseOutButton, false, 0, true);
button3.addEventListener(MouseEvent.CLICK, showMoreGames, false, 0, true);
}
function frame70(){
gotoAndPlay("start");
}
function frame55(){
stop();
this.addEventListener(MouseEvent.CLICK, carryOn, false, 0, true);
}
public function openSponsorPage(_arg1:MouseEvent):void{
dispatchEvent(new Event("openSponsorPage"));
}
public function startGame(_arg1:MouseEvent):void{
dispatchEvent(new Event("startGame"));
}
public function showCredits(_arg1:MouseEvent):void{
dispatchEvent(new Event("showCredits"));
}
public function carryOn(_arg1:MouseEvent):void{
this.removeEventListener(MouseEvent.CLICK, carryOn);
gotoAndPlay("credits_off");
}
public function showMoreGames(_arg1:MouseEvent):void{
dispatchEvent(new Event("showMoreGames"));
}
public function mouseOverButton(_arg1:MouseEvent):void{
_arg1.currentTarget.gotoAndStop(2);
}
public function kibaGames(_arg1:MouseEvent):void{
dispatchEvent(new Event("kibaGames"));
}
public function mouseOutButton(_arg1:MouseEvent):void{
_arg1.currentTarget.gotoAndStop(1);
}
function frame1(){
stop();
}
}
}//package
Section 298
//menuClickFX (menuClickFX)
package {
import flash.media.*;
public dynamic class menuClickFX extends Sound {
}
}//package
Section 299
//mochiHolder (mochiHolder)
package {
import flash.display.*;
public dynamic class mochiHolder extends MovieClip {
}
}//package
Section 300
//otherGamesMC (otherGamesMC)
package {
import flash.display.*;
import flash.events.*;
import flash.utils.*;
import flash.geom.*;
import flash.filters.*;
import flash.media.*;
import flash.text.*;
import flash.net.*;
import flash.errors.*;
import flash.system.*;
import flash.accessibility.*;
import flash.ui.*;
public dynamic class otherGamesMC extends MovieClip {
public var game2:SimpleButton;
public var game3:SimpleButton;
public var game4:SimpleButton;
public var game1:SimpleButton;
public function otherGamesMC(){
addFrameScript(0, frame1);
}
function frame1(){
game1.useHandCursor = true;
game2.useHandCursor = true;
game3.useHandCursor = true;
game4.useHandCursor = true;
game1.addEventListener(MouseEvent.CLICK, visitGame1);
game2.addEventListener(MouseEvent.CLICK, visitGame2);
game3.addEventListener(MouseEvent.CLICK, visitGame3);
game4.addEventListener(MouseEvent.CLICK, visitGame4);
}
public function visitGame1(_arg1:MouseEvent):void{
var _local2:URLRequest = new URLRequest("http://www.robotjamgames.com/games.php?game=flyingplatypus&refer=starfish");
navigateToURL(_local2, "_blank");
}
public function visitGame2(_arg1:MouseEvent):void{
var _local2:URLRequest = new URLRequest("http://www.robotjamgames.com/games.php?game=blobuloids&refer=starfish");
navigateToURL(_local2, "_blank");
}
public function visitGame3(_arg1:MouseEvent):void{
var _local2:URLRequest = new URLRequest("http://www.robotjamgames.com/games.php?game=monkeyBoom&refer=starfish");
navigateToURL(_local2, "_blank");
}
public function visitGame4(_arg1:MouseEvent):void{
var _local2:URLRequest = new URLRequest("http://www.robotjamgames.com/games.php?game=TheBubbleKing&refer=starfish");
navigateToURL(_local2, "_blank");
}
}
}//package
Section 301
//pinkClamMC (pinkClamMC)
package {
import flash.display.*;
public dynamic class pinkClamMC extends MovieClip {
}
}//package
Section 302
//playerFishMC (playerFishMC)
package {
import flash.display.*;
public dynamic class playerFishMC extends MovieClip {
}
}//package
Section 303
//robotLogoAnim (robotLogoAnim)
package {
import flash.display.*;
import flash.events.*;
import flash.utils.*;
import flash.geom.*;
import flash.filters.*;
import flash.media.*;
import flash.text.*;
import flash.net.*;
import flash.errors.*;
import flash.system.*;
import flash.accessibility.*;
import flash.ui.*;
public dynamic class robotLogoAnim extends MovieClip {
public function robotLogoAnim(){
addFrameScript(106, frame107);
}
function frame107(){
dispatchEvent(new Event("startGame"));
stop();
}
}
}//package
Section 304
//scorePopMC (scorePopMC)
package {
import flash.display.*;
import flash.text.*;
public dynamic class scorePopMC extends MovieClip {
public var score:TextField;
}
}//package
Section 305
//starfish (starfish)
package {
import flash.display.*;
import flash.events.*;
import photonstorm.starfish.*;
import mochi.as3.*;
import flash.text.*;
import flash.net.*;
import flash.ui.*;
public class starfish extends MovieClip {
private var skipMochiAd:Boolean;// = false
private var showKaiser:Boolean;// = false
public var mochiAdHolder:mochiHolder;
public var _mochiads_game_id:String;
private var mochiMC:MovieClip;
public var stats:TextField;
public var p:TextField;
private var intro:MovieClip;
private var loadComplete:Boolean;// = false
public function starfish(){
mochiMC = new MovieClip();
super();
addFrameScript(0, frame1, 1, frame2);
stage.scaleMode = StageScaleMode.NO_SCALE;
stage.align = StageAlign.TOP_LEFT;
stage.focus = null;
var _local1:ContextMenu = new ContextMenu();
_local1.hideBuiltInItems();
this.contextMenu = _local1;
var _local2:LocalConnection = new LocalConnection();
var _local3:String = _local2.domain;
var _local4 = "4ef99aae18d0b641";
if (_local3.search("cdn.kaisergames.com") > -1){
showKaiser = true;
};
addEventListener(Event.ADDED_TO_STAGE, init);
}
private function init(_arg1:Event):void{
removeEventListener(Event.ADDED_TO_STAGE, init);
addChild(mochiMC);
if (skipMochiAd == false){
MochiServices.connect("4ef99aae18d0b641", mochiMC);
MochiAd.showPreGameAd({clip:mochiMC, id:"4ef99aae18d0b641", res:"640x480", ad_finished:startIntro, no_bg:true, color:8049150, background:0xFFFFFF, outline:6318097});
};
addEventListener(Event.ENTER_FRAME, mainLoop);
}
public function progressUpdate(_arg1:Event){
var _local2:Number = ((_arg1.target.bytesLoaded / _arg1.target.bytesTotal) * 100);
p.text = (_local2.toFixed(0) + "%");
if (_arg1.target.bytesLoaded >= _arg1.target.bytesTotal){
p.text = "100%";
gotoAndPlay(2);
};
}
function frame1(){
_mochiads_game_id = "4ef99aae18d0b641";
p = stats;
this.loaderInfo.addEventListener(ProgressEvent.PROGRESS, progressUpdate);
stop();
}
function frame2(){
stop();
}
private function startIntro():void{
intro = new robotLogoAnim();
addChild(intro);
intro.addEventListener("startGame", startGame, false, 0, true);
intro.gotoAndPlay(1);
}
private function startGame(_arg1:Event):void{
removeChild(intro);
mochiMC.y = -50;
var _local2:gameEngine = new gameEngine();
var _local3:MovieClip = new gameFrame();
_local2.init(this.stage, mochiMC, showKaiser);
addChild(_local2);
addChild(_local3);
}
private function mainLoop(_arg1:Event):void{
if (currentFrame == 2){
removeEventListener(Event.ENTER_FRAME, mainLoop);
loadComplete = true;
if (skipMochiAd){
startIntro();
};
};
}
}
}//package
Section 306
//yellowClamMC (yellowClamMC)
package {
import flash.display.*;
public dynamic class yellowClamMC extends MovieClip {
}
}//package