Section 1
//AntDog (classes.AntDog)
package classes {
import ThreeDee.*;
import util.*;
public class AntDog {
var projections;
var bumbleModel;
var isStunned;
var pickupFoot;
public var isReversing;// = false
var jumpCount;// = 0
var lastFoot;// = null
var numMembers;
var isNearFeet;// = false
var tail;
var anchorPoint;
var head;
var closestFoot;// = false
public var reverseRate;
public var isJumping;// = false
var grav;// = -0.25
var headR;
var endJumpEvent;// = null
public function AntDog(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6){
var _local7:*;
isJumping = false;
isReversing = false;
jumpCount = 0;
endJumpEvent = null;
grav = -0.25;
lastFoot = null;
isNearFeet = false;
closestFoot = false;
super();
anchorPoint = _arg4;
numMembers = _arg1;
headR = _arg2;
projections = [];
_local7 = 0;
while (_local7 < numMembers) {
projections[_local7] = addProjection(_local7, _arg5, _arg6);
_arg5.addPart(projections[_local7]);
_local7++;
};
head = projections[0];
tail = projections[(numMembers - 1)];
tail.startWag(0.5, 1);
bumbleModel = new BumbleModel(numMembers, headR);
}
function setPickupFoot(_arg1, _arg2){
var _local3:*;
_local3 = projections[_arg1].getFoot(_arg2);
if (((!((_local3 == lastFoot))) && (!((lastFoot == null))))){
projections[pickupFoot[0]].dropFoot(pickupFoot[1]);
};
pickupFoot = [_arg1, _arg2];
lastFoot = _local3;
projections[_arg1].liftFoot(_arg2);
}
public function getTrackCoords(){
return ({x:head.head.anchorPoint.px, y:head.head.anchorPoint.py, z:head.head.anchorPoint.pz});
}
public function render(){
var _local1:*;
var _local2:*;
_local1 = 0;
while (_local1 < numMembers) {
_local2 = projections[_local1];
_local2.render();
_local1++;
};
}
public function trackToNavCoords(_arg1){
return ({x:(_arg1.x - anchorPoint.px), y:(_arg1.y - anchorPoint.py)});
}
public function twistHead(_arg1, _arg2, _arg3){
new RepeatedEvent(setHeadTwist, _arg1, _arg2, _arg3);
}
function clearPickupFoot(){
if (lastFoot != null){
projections[pickupFoot[0]].dropFoot(pickupFoot[1]);
lastFoot = null;
};
}
public function step(_arg1, _arg2){
var _local3:*;
var _local4:*;
var _local5:*;
var _local6:*;
var _local7:*;
var _local8:*;
var _local9:*;
_local3 = trackToNavCoords(_arg1);
_local4 = (bumbleModel.speed < 0.01);
if (_local4){
checkFeet(_arg1);
} else {
clearPickupFoot();
};
if (((((((isNearFeet) && (_local4))) || (isStunned))) || (isJumping))){
bumbleModel.isFrozen = true;
bumbleModel.speed = 0;
} else {
if (!isNearFeet){
bumbleModel.isFrozen = false;
};
};
if (_arg2){
bumbleModel.rangeBuffer = 100;
bumbleModel.brake = 2;
} else {
bumbleModel.rangeBuffer = 0;
bumbleModel.brake = 1;
};
bumbleModel.step(_local3);
_local5 = bumbleModel.members;
_local6 = 0;
while (_local6 < numMembers) {
_local7 = projections[_local6];
_local8 = _local5[_local6];
_local9 = 0;
if (_local6 > 0){
_local9 = (_local9 + projections[(_local6 - 1)].extraYSway());
};
if (_local6 < (numMembers - 1)){
_local9 = (_local9 + projections[(_local6 + 1)].extraYSway());
};
_local7.addExternalSway((_local9 / 2));
_local7.step(_local8.x, _local8.y, _local8.relativeHeadX, _local8.relativeHeadY, _local8.facing, (isJumping) ? 0 : _local8.walkSpeed, bumbleModel.maxSpeed, _arg1);
_local7.locate();
_local6++;
};
}
function checkFeet(_arg1){
var _local2:*;
var _local3:*;
var _local4:*;
var _local5:*;
var _local6:*;
var _local7:*;
isNearFeet = false;
closestFoot = false;
_local2 = 999;
_local3 = 1;
while (_local3 < numMembers) {
_local4 = 0;
while (_local4 < 2) {
_local5 = projections[_local3].getFoot(_local4);
if (!isNaN(_local5.px)){
_local6 = new Vector((_arg1.x - _local5.px), (_arg1.y - _local5.py)).getMag();
_local7 = (_local6 < (_local5.radius * 2));
if (_local6 < (_local5.radius * 3)){
isNearFeet = true;
};
if (_local7){
if (_local6 < _local2){
closestFoot = [_local3, _local4];
_local2 = _local6;
};
};
};
_local4++;
};
_local3++;
};
if (closestFoot != false){
setPickupFoot(closestFoot[0], closestFoot[1]);
} else {
clearPickupFoot();
};
}
public function trackToRelativeCoords(_arg1){
var _local2:*;
_local2 = trackToNavCoords(_arg1);
return ({x:(_local2.x - bumbleModel.x), y:(_local2.y - bumbleModel.y)});
}
function doJump(_arg1, _arg2, _arg3){
var _local4:*;
var _local5:*;
var _local6:*;
var _local7:*;
var _local8:*;
var _local9:*;
var _local10:*;
var _local11:*;
_local4 = Curves.easeOut((_arg1 * 2));
_local5 = -(((grav * _arg2) / 2));
_local6 = ((_local5 * (_arg2 * _arg1)) + (((grav * 0.5) * (_arg2 * _arg1)) * (_arg2 * _arg1)));
_local7 = 0;
while (_local7 < numMembers) {
_local11 = projections[_local7];
_local11.addOffSet(0, 0, ((_local6 * 1.5) + ((30 * (1 - (_local7 / numMembers))) * _local4)));
_local7++;
};
_local8 = (4 * Curves.easeOut((_arg1 * 2)));
_local9 = (_local8 * Math.cos(_arg3));
_local10 = (_local8 * Math.sin(_arg3));
bumbleModel.offsetPos(_local9, _local10);
tail.straigtenTail(Curves.easeOut((_arg1 * 2)));
if (_arg1 == 1){
_local7 = 0;
while (_local7 < numMembers) {
new DelayedEvent(projections[_local7].addHeadSpringV, 1, -7.5);
_local7++;
};
isJumping = false;
endJumpEvent = new DelayedEvent(recoverFromJump, 90);
};
}
public function initJump(_arg1, _arg2){
var _local3:*;
var _local4:*;
var _local5:*;
var _local6:*;
var _local7:*;
var _local8:*;
isJumping = true;
isStunned = true;
_local3 = {px:((projections[1].px + projections[2].px) / 2), py:((projections[1].py + projections[2].py) / 2)};
_local4 = new Vector((_local3.px - _arg2.x), (_local3.py - _arg2.y));
_local5 = 1;
while (_local5 < numMembers) {
_local7 = 0;
_local8 = 1;
projections[_local5].liftFoot(_local7, 8, 40);
projections[_local5].liftFoot(_local8, 16, 40);
new DelayedEvent(projections[_local5].dropFoot, 8, _local7, 16);
new DelayedEvent(projections[_local5].dropFoot, 16, _local8, 8);
_local5++;
};
tail.stopWag(4);
_local6 = new RepeatedEvent(doJump, _arg1, _arg1, _local4.getAngle());
_local6.fire();
}
public function addProjection(_arg1, _arg2, _arg3){
var _local4:*;
var _local5:*;
_local4 = ((_arg1 == 0)) ? AntDogSegmentHead : ((_arg1 == (numMembers - 1))) ? AntDogSegmentTail : AntDogSegmentLegged;
_local5 = new _local4(anchorPoint, _arg2, (((_arg1 % 2) == 1)) ? Palette.getColor("body1") : Palette.getColor("body0"), (((_arg1 % 2) == 1)) ? Palette.getColor("heel1") : Palette.getColor("heel0"), _arg3, headR);
return (_local5);
}
public function startle(_arg1, _arg2){
var _local3:*;
var _local4:*;
var _local5:*;
_local3 = trackToRelativeCoords(_arg2);
_local4 = new Vector(_local3.x, _local3.y).getMag();
if ((((((_local4 < 60)) && ((_arg1 > 3)))) || (isNearFeet))){
jumpCount++;
if (endJumpEvent != null){
endJumpEvent.cancel();
};
_local5 = ((closestFoot == false)) ? 3 : 1;
new DelayedEvent(initJump, _local5, 25, _arg2);
};
}
function setHeadTwist(_arg1, _arg2, _arg3){
var _local4:*;
_local4 = Curves.scurve(_arg1);
head.setHeadTwist(((_arg2 * (1 - _local4)) + (_arg3 * _local4)));
}
public function recoverFromJump(){
isStunned = false;
new DelayedEvent(tail.startWag, 90, 0.5, 10);
}
}
}//package classes
Section 2
//AntDogSegment (classes.AntDogSegment)
package classes {
import ThreeDee.*;
import util.*;
public class AntDogSegment extends ThreeDeePart {
var headZBase;
var headR;
var externalYSway;// = 0
var facingTransform;
var offX;// = 0
var offZ;// = 0
var groundArcRad;// = 2.0943951023932
var offY;// = 0
var baseColor;
var shadow;
var maxSpeed;
var headMotionSink;
var headBobMax;
var partContainer;
var spdFactor;
public var head;
var facing;// = 0
var headSpringZ;// = 0
var headSpringV;// = 0
public function AntDogSegment(_arg1, _arg2, _arg3, _arg4, _arg5){
groundArcRad = ((2 / 3) * Math.PI);
offX = 0;
offY = 0;
offZ = 0;
facing = 0;
externalYSway = 0;
headSpringZ = 0;
headSpringV = 0;
super(_arg1);
setMetrics(_arg5);
partContainer = _arg2;
baseColor = _arg3;
buildHead(headR);
}
public function getBobOsc(){
return (0);
}
function setMetrics(_arg1){
headZBase = ((_arg1 * 80) / 18);
headBobMax = (_arg1 / 6);
headMotionSink = (-(_arg1) / 3);
headR = _arg1;
}
public function extraSpring(){
return (0);
}
public function addOffSet(_arg1, _arg2, _arg3){
offX = _arg1;
offY = _arg2;
offZ = _arg3;
}
public function getExternalSway(){
return (externalYSway);
}
public function addHeadSpringV(_arg1){
headSpringV = (headSpringV + _arg1);
}
public function step(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7, _arg8){
var _local9:*;
var _local10:*;
var _local11:*;
var _local12:*;
facing = _arg5;
X = _arg1;
Y = _arg2;
spdFactor = (_arg6 / _arg7);
_local9 = getBobOsc();
_local10 = ((headZBase + ((headBobMax * Math.cos(((_local9 * Math.PI) * 2))) * spdFactor)) + (headMotionSink * spdFactor));
_local11 = (_arg3 + offX);
_local12 = (_arg4 + offY);
head.X = _local11;
head.Y = ((_local12 + extraYSway()) + getExternalSway());
head.Z = ((((_local10 + extraZSway()) + offZ) + runHeadSpring()) + extraSpring());
clearExternalSway();
}
public function runHeadSpring(){
headSpringV = (headSpringV + (-(headSpringZ) / 5));
headSpringV = (headSpringV * 0.8);
headSpringZ = (headSpringZ + headSpringV);
return (headSpringZ);
}
public function extraZSway(){
return (0);
}
public function clearExternalSway(){
externalYSway = 0;
}
public function addExternalSway(_arg1){
externalYSway = (externalYSway + _arg1);
}
public function buildHead(_arg1){
head = new ThreeDeeCircle(anchorPoint, _arg1);
head.setColor(baseColor);
partContainer.addPart(head);
}
public function extraYSway(){
return (0);
}
public function render(){
facingTransform = new ThreeDeeTransform({z:facing});
head.customLocate(facingTransform);
head.render();
}
}
}//package classes
Section 3
//AntDogSegmentHead (classes.AntDogSegmentHead)
package classes {
import ThreeDee.*;
import util.*;
public class AntDogSegmentHead extends AntDogSegment {
var shiftY;// = 0
var shiftZ;// = 0
var depthObjects;
var oscObject;
public function AntDogSegmentHead(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6){
shiftY = 0;
shiftZ = 0;
super(_arg1, _arg2, _arg3, _arg5, _arg6);
oscObject = new WalkLeg(-1, 0, 30, groundArcRad, 0, 0);
}
override public function getBobOsc(){
return (((oscObject.osc + 0.15) * 2));
}
public function getTrackCoords(){
return ({x:px, y:py, z:(pz + head.Z)});
}
override public function step(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7, _arg8){
var _local9:*;
var _local10:*;
var _local11:*;
var _local12:*;
var _local13:*;
var _local14:*;
var _local15:*;
var _local16:*;
_local9 = (_arg5 - facing);
super.step(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7, _arg8);
_local10 = new Vector((_arg8.x - anchorPoint.px), (_arg8.y - anchorPoint.py)).rotate(facing);
_local11 = _local10.getAngle();
_local12 = Math.atan2((_arg8.z - head.pz), _local10.y);
_local13 = 0;
if (_local11 > 0){
_local13 = (((-(Math.cos(_local11)) + 1) * 5) * Math.abs(Math.cos(_local12)));
} else {
if (_local11 < 0){
_local13 = (((Math.cos(_local11) - 1) * 5) * Math.abs(Math.cos(_local12)));
};
};
shiftY = ((_local13 + shiftY) / 2);
_local14 = Math.atan2((_arg8.z - head.pz), _local10.x);
_local15 = ShortCuts.getAngleDiff(_local14, 0);
_local16 = (Math.sin((_local15 / 2)) * 20);
shiftZ = ((_local16 + (shiftZ * 3)) / 4);
head.lookStep(_arg8, facing);
oscObject.setStrideFactor(spdFactor);
oscObject.step(_arg6, _local9);
}
public function setHeadTwist(_arg1){
head.setTwist(_arg1);
}
override public function extraZSway(){
return (shiftZ);
}
override public function buildHead(_arg1){
head = new BeakHead(anchorPoint, _arg1, Palette.getColor("body0"), Palette.getColor("nose"), Palette.getColor("eye"));
partContainer.addPart(head);
}
override public function extraYSway(){
return (shiftY);
}
override public function render(){
super.render();
}
}
}//package classes
Section 4
//AntDogSegmentLegged (classes.AntDogSegmentLegged)
package classes {
import ThreeDee.*;
import flash.display.*;
import util.*;
public class AntDogSegmentLegged extends AntDogSegment {
var ankleOffsetZ;
var legStride;
var hipD;
var hipZ;
var footStatuses;
var hips;
var legLiftEvents;
var footTipMax;
var footLifts;
var legThickness;
var heelColor;
var footShadows;
var ankles;
var footSpread;
var walkSway;
var knees;
var legObjArr;
var segLength;
var footR;
var legClips;
var feet;
var ySway;// = 0
public function AntDogSegmentLegged(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6){
var _local7:*;
var _local8:*;
var _local9:*;
var _local10:*;
var _local11:*;
var _local12:*;
var _local13:*;
ySway = 0;
footLifts = [0, 0];
super(_arg1, _arg2, _arg3, _arg5, _arg6);
heelColor = _arg4;
feet = [];
hips = [];
knees = [];
ankles = [];
legClips = [];
footShadows = [];
legLiftEvents = [];
footStatuses = [];
_local7 = 0;
while (_local7 < 2) {
_local8 = new Sprite();
legClips.push(_local8);
_local9 = new ThreeDeeDome(anchorPoint, footR, "z");
_local9.setColors(_arg4, baseColor);
_local10 = new ThreeDeePoint(_local9, 0, 0, ankleOffsetZ);
ankles.push(_local10);
_local11 = new ThreeDeePoint(anchorPoint, 0, ((_local7 == 0)) ? -(hipD) : hipD);
hips.push(_local11);
_local12 = new ThreeDeePoint(anchorPoint);
knees.push(_local12);
feet.push(_local9);
partContainer.addPart(_local8, _local11);
partContainer.addPart(_local9);
_local13 = new ThreeDeeDisc(anchorPoint, footR, "z");
_arg5.addChild(_local13);
footShadows[_local7] = _local13;
_local7++;
};
legObjArr = [new WalkLeg(-1, -(hipD), legStride, groundArcRad, footTipMax, 0), new WalkLeg(-1, hipD, legStride, groundArcRad, footTipMax, 0.5)];
}
override public function getBobOsc(){
return (((legObjArr[0].osc + 0.15) * 2));
}
override function setMetrics(_arg1){
super.setMetrics(_arg1);
segLength = (_arg1 * 2.2777778);
legThickness = ((_arg1 * 2) / 3);
footR = ((_arg1 * 2) / 3);
hipD = (((_arg1 * 8) / 9) - (legThickness / 2));
hipZ = ((-(_arg1) * 2) / 9);
legStride = ((_arg1 * 13) / 9);
footSpread = ((_arg1 * 5) / 18);
walkSway = (_arg1 / 6);
footTipMax = (Math.PI / 6);
ankleOffsetZ = ((footR * 2) / 3);
}
public function liftFoot(_arg1, _arg2=8, _arg3=20, _arg4=false){
if ((((footStatuses[_arg1] == "up")) && (!(_arg4)))){
return;
};
footStatuses[_arg1] = "up";
if (legLiftEvents[_arg1] != undefined){
legLiftEvents[_arg1].cancel();
};
legLiftEvents[_arg1] = new RepeatedEvent(doFootLift, _arg2, _arg1, footLifts[_arg1], _arg3);
legLiftEvents[_arg1].fire();
}
override public function extraSpring(){
return (0);
}
function doFootLift(_arg1, _arg2, _arg3, _arg4){
var _local5:*;
_local5 = ((_arg3 > _arg4)) ? Curves.easeIn(_arg1) : Curves.easeOut(_arg1);
footLifts[_arg2] = ((_arg3 * (1 - _local5)) + (_arg4 * _local5));
}
override public function step(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7, _arg8){
var _local9:*;
_local9 = (_arg5 - facing);
super.step(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7, _arg8);
legObjArr[0].setStrideFactor(spdFactor);
legObjArr[1].setStrideFactor(spdFactor);
legObjArr[0].step(_arg6, _local9);
legObjArr[1].step(_arg6, _local9);
}
public function getFoot(_arg1){
return (feet[_arg1]);
}
override public function extraYSway(){
ySway = (((ySway * walkSway) + ((footLifts[0] - footLifts[1]) / 3)) / 4);
return (ySway);
}
override public function render(){
var _local1:*;
var _local2:*;
var _local3:*;
var _local4:*;
var _local5:*;
var _local6:*;
var _local7:*;
var _local8:*;
var _local9:*;
var _local10:*;
var _local11:*;
super.render();
_local1 = 0;
while (_local1 < 2) {
_local2 = hips[_local1];
_local3 = ankles[_local1];
_local4 = knees[_local1];
hips[_local1].z = (head.Z + hipZ);
hips[_local1].x = head.X;
hips[_local1].y = (hips[_local1].iy + head.Y);
hips[_local1].customLocate(facingTransform);
_local5 = feet[_local1];
_local6 = legObjArr[_local1];
_local5.X = _local6.footX;
_local5.Y = (_local6.footY + ((footSpread * (_local1 - 0.5)) * 2));
_local5.Z = ((-(_local6.footZ) + ((offZ * 3) / 4)) + footLifts[_local1]);
_local5.customLocate(facingTransform);
_local7 = new ThreeDeeTransform({x:(_local6.footTip * spdFactor)}, {z:(facing + (Math.PI / 2))});
_local5.customRender(_local7);
footShadows[_local1].X = _local5.X;
footShadows[_local1].Y = _local5.Y;
footShadows[_local1].customLocate(facingTransform);
footShadows[_local1].customRender(facingTransform);
ankles[_local1].customLocate(_local7);
_local8 = ThreeDeeLimbUtil.getKneeCoords(_local2, {x:_local5.X, y:_local5.Y, z:_local5.Z}, segLength);
_local4.x = _local8.x;
_local4.y = _local8.y;
_local4.z = _local8.z;
_local4.customLocate(facingTransform);
_local9 = legClips[_local1].graphics;
_local9.clear();
_local9.lineStyle((legThickness * hips[_local1].depth), baseColor, 1, false, "normal");
_local9.moveTo(hips[_local1].vx, hips[_local1].vy);
_local9.lineTo(((_local2.vx + (_local4.vx * 3)) / 4), ((_local2.vy + (_local4.vy * 3)) / 4));
_local9.curveTo(knees[_local1].vx, knees[_local1].vy, ((_local3.vx + (_local4.vx * 3)) / 4), ((_local3.vy + (_local4.vy * 3)) / 4));
_local9.lineTo(_local3.vx, _local3.vy);
_local10 = ((_local1 == 0)) ? -1 : 1;
_local11 = Math.max(0, Math.sin((facing + ((Math.PI / 2) * _local10))));
ColorTools.setTint(legClips[_local1], heelColor, (_local11 / 3));
ColorTools.setTint(feet[_local1], heelColor, (_local11 / 3));
_local1++;
};
}
public function dropFoot(_arg1, _arg2=8, _arg3=false){
if ((((footStatuses[_arg1] == "down")) && (!(_arg3)))){
return;
};
footStatuses[_arg1] = "down";
if (legLiftEvents[_arg1] != undefined){
legLiftEvents[_arg1].cancel();
};
legLiftEvents[_arg1] = new RepeatedEvent(doFootLift, _arg2, _arg1, footLifts[_arg1], 0);
legLiftEvents[_arg1].fire();
}
}
}//package classes
Section 5
//AntDogSegmentTail (classes.AntDogSegmentTail)
package classes {
import ThreeDee.*;
import util.*;
public class AntDogSegmentTail extends AntDogSegmentLegged {
var tailTip;
var wagStrength;// = 0
var midAng;// = 2.51327412287183
var wagOsc;// = 0
var tailColor;// = 0x666666
var tailSegLength;
var tipAng;// = 1.5707963267949
var tailBase;
var baseAng;// = 2.35619449019234
var wagRate;// = 0
var tailRoot;
var lw;// = 4
var wagAngleMax;// = 0.785398163397448
var tailClip;
var wagEvt;// = null
var tailMid;
public function AntDogSegmentTail(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6){
tipAng = (Math.PI / 2);
midAng = ((4 * Math.PI) / 5);
baseAng = ((3 * Math.PI) / 4);
lw = 4;
tailColor = 0x666666;
wagEvt = null;
wagStrength = 0;
wagRate = 0;
wagAngleMax = (Math.PI / 4);
wagOsc = 0;
super(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6);
tailColor = baseColor;
tailSegLength = (headR * 0.7);
tailBase = new ThreeDeeCircle(head, lw);
tailBase.setCoords((headR * Math.cos(baseAng)), 0, (headR * Math.sin(baseAng)));
tailBase.setColor(tailColor);
tailRoot = new ThreeDeePoint(head);
tailMid = new ThreeDeePoint(tailBase);
tailTip = new ThreeDeePoint(tailMid);
setTail();
tailClip = new ThreeDeeDrawShell(0.1);
partContainer.addPart(tailBase);
partContainer.addPart(tailClip, tailRoot);
}
function fadeOutWag(_arg1, _arg2){
fadeInWag((1 - _arg1), _arg2);
}
function fadeInWag(_arg1, _arg2){
wagRate = (_arg2 * _arg1);
wagStrength = _arg1;
}
override public function step(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7, _arg8){
super.step(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7, _arg8);
}
public function straigtenTail(_arg1){
setTail(_arg1, (1 + (_arg1 / 2)));
}
public function startWag(_arg1, _arg2){
if (wagEvt != null){
wagEvt.cancel();
};
wagEvt = new RepeatedEvent(fadeInWag, _arg2, _arg1);
}
public function stopWag(_arg1){
if (wagEvt != null){
wagEvt.cancel();
};
wagEvt = new RepeatedEvent(fadeOutWag, _arg1, wagRate);
}
override public function render(){
var _local1:*;
var _local2:*;
var _local3:*;
var _local4:*;
super.render();
wagOsc = (wagOsc + wagRate);
_local1 = ((wagAngleMax * Math.sin(wagOsc)) * wagStrength);
_local2 = new ThreeDeeTransform({x:(_local1 / 2)}, {z:facing});
_local3 = new ThreeDeeTransform({x:_local1}, {z:facing});
tailBase.customLocate(facingTransform);
tailBase.render();
tailRoot.customLocate(facingTransform);
tailMid.customLocate(_local2);
tailTip.customLocate(_local3);
_local4 = tailClip;
_local4.clear();
_local4.lineStyle((lw * tailRoot.depth), tailColor);
_local4.moveTo(tailRoot.vx, tailRoot.vy);
_local4.curveTo(tailMid.vx, tailMid.vy, tailTip.vx, tailTip.vy);
}
function setTail(_arg1=0, _arg2=1){
var _local3:*;
tailRoot.setCoords(((headR + (lw / 2)) * Math.cos(baseAng)), 0, ((headR + (lw / 2)) * Math.sin(baseAng)));
tailMid.setCoords(((_arg2 * tailSegLength) * Math.cos(midAng)), 0, ((_arg2 * tailSegLength) * Math.sin(midAng)));
_local3 = ((tipAng * (1 - _arg1)) + (midAng * _arg1));
tailTip.setCoords(((_arg2 * tailSegLength) * Math.cos(_local3)), 0, ((_arg2 * tailSegLength) * Math.sin(_local3)));
}
}
}//package classes
Section 6
//BeakHead (classes.BeakHead)
package classes {
import ThreeDee.*;
import util.*;
public class BeakHead extends ThreeDeePart {
var eyeY;
var eyes;
var base;
var depthObjects;
var extraTwist;// = 0
var currLookDir;// = 0
var lookTarget;
var xTip;// = 0
var oscObject;
var headTurnLimit;// = 1.5707963267949
var yTip;// = 0
var beak;
var facing;
public function BeakHead(_arg1, _arg2, _arg3, _arg4, _arg5){
var _local6:*;
var _local7:*;
var _local8:*;
currLookDir = 0;
headTurnLimit = (Math.PI / 2);
extraTwist = 0;
xTip = 0;
yTip = 0;
super(_arg1);
base = new ThreeDeeCircle(anchorPoint, _arg2);
base.setColor(_arg3);
addChild(base);
depthObjects = [];
eyes = [];
_local6 = 0;
while (_local6 < 2) {
_local7 = ((_local6 == 0)) ? 1 : -1;
_local8 = new ThreeDeeCone(base, (_arg2 * 0.4), (_arg2 / 6), "y", _local7);
_local8.Y = ((_arg2 - (_arg2 / 10.5)) * _local7);
_local8.setColors(_arg3, _arg5);
addChild(_local8);
eyes.push(_local8);
depthObjects.push(_local8);
_local6++;
};
beak = new ThreeDeeCone(base, (_arg2 * 0.7), (_arg2 * 1.5));
beak.X = ((_arg2 * 2) / 3);
addChild(beak);
depthObjects.push(beak);
beak.setColors(_arg3, _arg4);
}
public function lookStep(_arg1, _arg2){
lookTarget = _arg1;
facing = _arg2;
}
public function render(_arg1=1){
var _local2:*;
var _local3:*;
var _local4:*;
var _local5:*;
var _local6:*;
var _local7:*;
var _local8:*;
var _local9:*;
var _local10:*;
var _local11:*;
_local2 = (lookTarget.x - px);
_local3 = (lookTarget.y - py);
_local4 = (lookTarget.z - pz);
_local5 = ((_local2 * Math.cos(facing)) + (_local3 * Math.sin(facing)));
_local6 = ((_local3 * Math.cos(facing)) - (_local2 * Math.sin(facing)));
_local7 = 1;
xTip = (((-((Math.atan2(Maths.pyt(_local4, _local5), (_local6 * _local7)) + ((Math.PI / 2) * _arg1))) * _arg1) + xTip) / 2);
yTip = (((Math.atan2(Maths.pyt(_local4, _local6), _local5) * _local7) + yTip) / 2);
_local8 = new ThreeDeeTransform({x:extraTwist}, {y:yTip}, {x:xTip}, {z:facing});
base.customLocate(_local8);
base.customRender(_local8);
beak.customLocate(_local8);
beak.customRender(_local8);
_local9 = 0;
while (_local9 < 2) {
_local11 = eyes[_local9];
_local11.customLocate(_local8);
_local11.customRender(_local8);
_local9++;
};
depthObjects.sortOn("depth");
_local10 = depthObjects.length;
_local9 = 0;
while (_local9 < _local10) {
setChildIndex(depthObjects[_local9], (_local9 + 1));
_local9++;
};
}
public function setTwist(_arg1){
extraTwist = _arg1;
}
}
}//package classes
Section 7
//BumbleMember (classes.BumbleMember)
package classes {
import util.*;
public class BumbleMember {
var lastV;// = 0
var velVec;
var bounceBleed;
var headOffset;
var lastCoords;
var lastFacing;// = 0
public var facing;
var bobPos;
public var isLeader;
var lastVel;
var bobVel;
public var mass;
var v;
var x;
var y;
var headV;
var relativeHeadOffset;
public function BumbleMember(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7){
lastV = 0;
lastFacing = 0;
super();
bounceBleed = _arg4;
isLeader = _arg2;
mass = _arg3;
x = _arg5;
y = _arg6;
lastCoords = {x:_arg5, y:_arg6};
lastVel = new Vector(0, 0);
bobVel = new Vector(0, 0);
bobPos = new Vector(0, 0);
headV = new Vector(0, 0);
headOffset = new Vector(0, 0);
relativeHeadOffset = new Vector(0, 0);
}
function getAngleDiff(_arg1, _arg2){
while ((_arg1 - _arg2) > Math.PI) {
_arg1 = (_arg1 - (Math.PI * 2));
};
while ((_arg2 - _arg1) > Math.PI) {
_arg1 = (_arg1 + (Math.PI * 2));
};
return ((_arg1 - _arg2));
}
public function get headY(){
return (headOffset.y);
}
public function step(_arg1){
var _local2:*;
var _local3:*;
var _local4:*;
facing = _arg1;
_local2 = (x - lastCoords.x);
_local3 = (y - lastCoords.y);
velVec = new Vector(_local2, _local3);
v = velVec.getMag();
_local4 = -((v - lastV));
if ((((_local4 > 0)) && (!(isLeader)))){
addHeadVelocity(_local4, facing);
};
lastV = v;
lastCoords = {x:x, y:y};
lastFacing = facing;
}
public function get relativeHeadY(){
return (relativeHeadOffset.y);
}
public function get walkSpeed(){
return (lastV);
}
public function get totalV(){
return (new Vector((headV.x + velVec.x), (headV.y + velVec.y)));
}
public function get relativeHeadX(){
return (relativeHeadOffset.x);
}
public function addHeadVelocity(_arg1, _arg2){
var _local3:*;
_local3 = new Vector(0, 0);
_local3.setMag(_arg1);
_local3.setAngle(_arg2);
headV.plus(_local3);
}
public function get headX(){
return (headOffset.x);
}
public function sumForces(){
var _local1:*;
headOffset.plus(headV);
_local1 = headOffset.copy().scale(-0.03);
headV.plus(_local1);
headV.scale(bounceBleed);
relativeHeadOffset = headOffset.copy().rotate(facing);
}
}
}//package classes
Section 8
//BumbleModel (classes.BumbleModel)
package classes {
public class BumbleModel extends DualNav {
var trail;
var buffer;// = 6
var bumblerR;
var members;
var numMembers;// = 4
public function BumbleModel(_arg1, _arg2){
var _local3:*;
var _local4:*;
var _local5:*;
numMembers = 4;
buffer = 6;
_local3 = 8;
_local4 = new Nav((_local3 / 2), 0.25, 0.1, 37.5, 50);
_local5 = new Nav(_local3, 0.5, 0.1, 75, 100);
super(_local4, _local5);
trail = new BumbleTrail(initX, initY, initFacing);
numMembers = _arg1;
bumblerR = _arg2;
buildBumbleChain();
}
function trimTrail(){
var _local1:*;
_local1 = ((numMembers - 1) * ((bumblerR * 2) + buffer));
trail.trim((_local1 + 100));
}
override public function step(_arg1){
super.step(_arg1);
matchMembersToTrail();
runMemberCollisions();
trimTrail();
}
function checkCollision(_arg1, _arg2){
var _local3:*;
var _local4:*;
var _local5:*;
var _local6:*;
var _local7:*;
var _local8:*;
var _local9:*;
var _local10:*;
var _local11:*;
_local3 = ((_arg2.headX + _arg2.x) - (_arg1.headX + _arg1.x));
_local4 = ((_arg2.headY + _arg2.y) - (_arg1.headY + _arg1.y));
_local5 = Math.sqrt(((_local3 * _local3) + (_local4 * _local4)));
if (_local5 < (bumblerR * 2)){
_local6 = Math.atan2(_local4, _local3);
_local7 = _arg1.totalV.minus(_arg2.totalV);
_local8 = _local7.getMag();
_local9 = (_arg1.mass + _arg2.mass);
_local10 = (_arg2.mass / _local9);
_local11 = (_arg1.mass / _local9);
_arg1.addHeadVelocity((_local8 * _local10), (_local6 + Math.PI));
_arg2.addHeadVelocity((_local8 * _local11), _local6);
};
}
function matchMembersToTrail(){
var _local1:*;
var _local2:*;
_local1 = 0;
while (_local1 < numMembers) {
_local2 = trail.getCoordsAt((_local1 * ((bumblerR * 2) + buffer)), (_local1 == 0));
members[_local1].x = _local2.x;
members[_local1].y = _local2.y;
members[_local1].step(_local2.facing);
_local1++;
};
}
override public function offsetPos(_arg1, _arg2){
super.offsetPos(_arg1, _arg2);
trail.offsetCoords(_arg1, _arg2);
}
function reverseNav(_arg1){
var _local2:*;
trail.shave(_arg1);
_local2 = trail.getCoordsAt(0);
nav.x = _local2.x;
nav.y = _local2.y;
nav.facing = _local2.facing;
}
override function stepNav(_arg1){
super.stepNav(_arg1);
trail.recordStep(nav.x, nav.y, nav.facing, nav.speed);
}
public function getMembers(){
return (members);
}
function runMemberCollisions(){
var _local1:*;
_local1 = 1;
while (_local1 < numMembers) {
checkCollision(members[(_local1 - 1)], members[_local1]);
_local1++;
};
_local1 = 0;
while (_local1 < numMembers) {
members[_local1].sumForces();
_local1++;
};
}
function buildBumbleChain(){
var _local1:*;
var _local2:*;
members = [];
_local1 = 0;
while (_local1 < numMembers) {
_local2 = new BumbleMember(bumblerR, (_local1 == 0), ((_local1 == 0)) ? 1 : 1, 0.9, initX, initY, initFacing);
members.push(_local2);
_local1++;
};
}
}
}//package classes
Section 9
//BumbleTrail (classes.BumbleTrail)
package classes {
import util.*;
public class BumbleTrail {
var initX;
var initY;
var initFacing;
var history;
var _t;
public function BumbleTrail(_arg1, _arg2, _arg3){
initX = _arg1;
initY = _arg2;
initFacing = _arg3;
history = [];
_t = 0;
}
public function trim(_arg1){
var _local2:*;
var _local3:*;
var _local4:*;
var _local5:*;
_local2 = history.length;
_local3 = 0;
_local5 = (_local2 - 1);
while (_local5 >= 0) {
_local4 = (_t - history[_local5].t);
if (_local4 >= _arg1){
_local3 = _local5;
break;
};
_local5--;
};
history = history.splice(_local3, (_local2 - _local3));
}
public function shave(_arg1){
var _local2:*;
var _local3:*;
var _local4:*;
var _local5:*;
_local2 = getCoordsAt(_arg1);
_local3 = history.length;
_local5 = (_local3 - 1);
while (_local5 >= 0) {
_local4 = (_t - history[_local5].t);
if (_local4 <= _arg1){
history.splice(_local5, 1);
_local5--;
} else {
break;
};
_local5--;
};
history.push(_local2);
_t = (_t - _arg1);
}
public function getPointBetween(_arg1, _arg2, _arg3){
var _local4:*;
_local4 = ((_arg3 - _arg1.t) / (_arg2.t - _arg1.t));
return ({t:(_arg1.t + ((_arg2.t - _arg1.t) * _local4)), x:(_arg1.x + ((_arg2.x - _arg1.x) * _local4)), y:(_arg1.y + ((_arg2.y - _arg1.y) * _local4)), facing:(_arg1.facing + (ShortCuts.getAngleDiff(_arg2.facing, _arg1.facing) * _local4))});
}
public function offsetCoords(_arg1, _arg2){
var _local3:*;
for each (_local3 in history) {
_local3.x = (_local3.x + _arg1);
_local3.y = (_local3.y + _arg2);
};
}
public function listPoints(){
var _local1:*;
var _local2:*;
_local1 = history.length;
_local2 = (_local1 - 1);
while (_local2 >= 0) {
trace(("t " + history[_local2].t));
_local2--;
};
}
function recordStep(_arg1, _arg2, _arg3, _arg4){
var _local5:*;
var _local6:*;
var _local7:*;
var _local8:*;
var _local9:*;
_t = (_t + _arg4);
_local5 = {x:_arg1, y:_arg2, facing:_arg3, t:_t};
history.push(_local5);
_local6 = history.length;
if (_local6 > 1){
_local7 = history[(_local6 - 2)];
_local8 = (_local7.x - _local5.x);
_local9 = (_local7.y - _local5.y);
if (Math.sqrt(((_local8 * _local8) + (_local9 * _local9))) < 1){
history.splice((history.length - 2), 1);
};
};
}
public function getHistory(){
return (history);
}
public function getCoordsAt(_arg1, _arg2=false){
var _local3:*;
var _local4:*;
var _local5:*;
var _local6:*;
_local4 = history.length;
_local5 = (_local4 - 1);
while (_local5 >= 0) {
_local3 = (_t - history[_local5].t);
if (_local3 == _arg1){
_local6 = history[_local5];
return ({t:_local6.t, x:_local6.x, y:_local6.y, facing:_local6.facing});
};
if (_local3 >= _arg1){
return (getPointBetween(history[_local5], history[(_local5 + 1)], (_t - _arg1)));
};
_local5--;
};
return ({x:initX, y:initY, facing:initFacing});
}
}
}//package classes
Section 10
//DualNav (classes.DualNav)
package classes {
import util.*;
public class DualNav {
var initX;// = 1200
var initY;// = 100
var initFacing;// = 3.14159265358979
var runNav;
var walkNav;
var runThreshold;// = 200
var nav;
public var isFrozen;
public function DualNav(_arg1, _arg2){
runThreshold = 200;
initX = 1200;
initY = 100;
initFacing = Math.PI;
super();
initNavs(_arg1, _arg2);
}
public function get maxSpeed(){
return (runNav.maxSpeed);
}
public function step(_arg1){
var _local2:*;
_local2 = new Vector((_arg1.x - nav.x), (_arg1.y - nav.y)).getMag();
if ((((nav == walkNav)) && ((_local2 > runThreshold)))){
setNav(runNav);
};
if (!isFrozen){
stepNav(_arg1);
};
}
public function get speed(){
return (nav.speed);
}
public function set speed(_arg1){
nav.speed = _arg1;
}
public function set brake(_arg1){
nav.brake = _arg1;
}
public function offsetPos(_arg1, _arg2){
nav.x = (nav.x + _arg1);
nav.y = (nav.y + _arg2);
}
public function setNav(_arg1){
var _local2:*;
_local2 = nav;
nav = _arg1;
nav.x = _local2.x;
nav.y = _local2.y;
nav.speed = _local2.speed;
nav.facing = _local2.facing;
nav.rangeBuffer = _local2.rangeBuffer;
}
function initNavs(_arg1, _arg2){
runNav = _arg2;
walkNav = _arg1;
runNav.restListener = atRest;
walkNav.restListener = atRest;
nav = walkNav;
nav.x = initX;
nav.y = initY;
nav.facing = initFacing;
}
public function get facing(){
return (nav.facing);
}
public function atRest(){
if (nav == runNav){
setNav(walkNav);
};
}
function stepNav(_arg1){
nav.step(_arg1.x, _arg1.y);
}
public function get x(){
return (nav.x);
}
public function get y(){
return (nav.y);
}
public function set rangeBuffer(_arg1){
nav.rangeBuffer = _arg1;
}
}
}//package classes
Section 11
//Nav (classes.Nav)
package classes {
import util.*;
public class Nav {
var _accelMax;
var _mVec;
var _speedUpRange;
var _restListener;
var _decelMax;
public var rangeBuffer;// = 0
var _maxSpeed;
var _pVec;
var _turnRateMax;
var _accel;
var _motionOscRate;
public var brake;// = 1
var minVal;// = 0.0001
var motionOsc;// = 0
public var restListener;// = null
var _slowRange;
public function Nav(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6=0.1){
minVal = 0.0001;
rangeBuffer = 0;
brake = 1;
motionOsc = 0;
restListener = null;
super();
_maxSpeed = _arg1;
_turnRateMax = _arg3;
_accelMax = _arg2;
_decelMax = _arg2;
_slowRange = _arg4;
_speedUpRange = _arg5;
_motionOscRate = _arg6;
_mVec = new Vector(0, 0);
_pVec = new Vector(0, 0);
}
public function get speed(){
return (_mVec.getMag());
}
public function set facing(_arg1){
_mVec.setAngle(_arg1);
}
public function get accel(){
return (_accel);
}
public function offsetCoords(_arg1, _arg2){
_pVec.x = (_pVec.x + _arg1);
_pVec.y = (_pVec.y + _arg2);
}
function step(_arg1, _arg2){
var _local3:*;
var _local4:*;
var _local5:*;
var _local6:*;
var _local7:*;
var _local8:*;
var _local9:*;
var _local10:*;
var _local11:*;
var _local12:*;
_local3 = new Vector(_arg1, _arg2);
_local3.minus(_pVec);
_local4 = _local3.getMag();
_local5 = _mVec.getMag();
_accel = 0;
if (_local4 > (_speedUpRange + rangeBuffer)){
if (_local5 < _maxSpeed){
_accel = Math.min(_accelMax, (_maxSpeed - _local5));
};
} else {
if (_local4 < (_slowRange + rangeBuffer)){
if (_local5 > minVal){
_accel = Math.max((-(_decelMax) * brake), -((_local5 - minVal)));
} else {
if (restListener != null){
restListener();
};
};
};
};
_mVec.setMag((_local5 + _accel));
motionOsc = (motionOsc + _motionOscRate);
_local6 = Math.min((_local4 / 500), 1);
_local7 = (((Math.PI / 12) * Math.cos(motionOsc)) * _local6);
_local8 = (_local5 / _maxSpeed);
_local9 = _mVec.getAngle();
_local10 = (_local3.getAngle() + _local7);
_local11 = (_local10 - _local9);
if (_local11 < -(Math.PI)){
_local11 = (_local11 + (2 * Math.PI));
};
if (_local11 > Math.PI){
_local11 = (_local11 - (2 * Math.PI));
};
if (Math.abs(_local11) < (Math.PI / 16)){
_local12 = (Math.abs(_local11) / (Math.PI / 16));
} else {
_local12 = 1;
};
if (_local11 < 0){
_local9 = (_local9 - ((_turnRateMax * _local8) * _local12));
} else {
_local9 = (_local9 + ((_turnRateMax * _local8) * _local12));
};
_mVec.setAngle(_local9);
_pVec.plus(_mVec);
}
public function get maxSpeed(){
return (_maxSpeed);
}
public function set accel(_arg1){
_accel = _arg1;
}
public function get facing(){
return (_mVec.getAngle());
}
public function set speed(_arg1){
if (_arg1 < minVal){
_arg1 = minVal;
};
_mVec.setMag(_arg1);
}
public function set y(_arg1){
_pVec.y = _arg1;
}
public function get x(){
return (_pVec.x);
}
public function get y(){
return (_pVec.y);
}
public function set x(_arg1){
_pVec.x = _arg1;
}
}
}//package classes
Section 12
//Palette (classes.Palette)
package classes {
public class Palette {
static var colorLib = [{body0:6723942, spiderEye:0xFFFFFF, bigBody:1126496, shadow:1073206, body1:2245666, heel0:2245666, heel1:2107670, bg:1470528, spider:2107670, nose:13421738, eye:2107670, bigHeel:598080}, {body0:6723942, spiderEye:0xFFFFFF, bigBody:1126496, shadow:1073206, body1:2245666, heel0:2245666, heel1:2107670, bg:1470528, spider:2107670, nose:13421738, eye:2107670, bigHeel:598080}];
static var colrIndx = 1;
public static function getColor(_arg1){
var _local2:*;
_local2 = colorLib[colrIndx];
return (_local2[_arg1]);
}
}
}//package classes
Section 13
//Shell (classes.Shell)
package classes {
import ThreeDee.*;
import flash.display.*;
import util.*;
import flash.events.*;
import flash.ui.*;
public class Shell extends Sprite {
var windowWidth;
var viewMask;
var windowHeight;
var sky;
var bg;
var tail;
var foreGround;
var bumblerR;// = 18
var bottomFrameThickness;// = 20
var viewShell;
var numMembers;// = 4
var logo;
var sideFrameThickness;// = 5
var partContainer;
var isIntroed;// = false
var corners;
var anchorPoint;
var spider;
var antDog;
var head;
var shadowShell;
public function Shell(){
var _local1:*;
var _local2:*;
var _local3:*;
numMembers = 4;
bumblerR = 18;
sideFrameThickness = 5;
bottomFrameThickness = 20;
isIntroed = false;
_local1 = ShortCuts.getFlashVersion();
if (_local1 < 9){
ShortCuts.gotoUrl("http://www.vectorpark.com/flashRedirect.html");
};
viewShell = new Sprite();
addChild(viewShell);
viewMask = new Sprite();
addChild(viewMask);
viewShell.mask = viewMask;
logo = new vpLogo();
addChild(logo);
logo.useHandCursor = true;
logo.buttonMode = true;
logo.addEventListener("mouseDown", gotoHomePage);
bg = new Sprite();
viewShell.addChild(bg);
corners = [];
_local2 = 0;
while (_local2 < 4) {
corners[_local2] = new frameCorner();
addChild(corners[_local2]);
_local2++;
};
foreGround = new Sprite();
viewShell.addChild(foreGround);
shadowShell = new Sprite();
foreGround.addChild(shadowShell);
ColorTools.setRGB(shadowShell, Palette.getColor("shadow"));
partContainer = new ThreeDeePartContainer();
foreGround.addChild(partContainer);
ThreeDeeCamera.perspex = 1200;
_local3 = 1;
anchorPoint = new ThreeDeePoint(false, 0, (1500 * _local3), (-300 * _local3));
anchorPoint.locate();
spider = new Spider(this, anchorPoint, shadowShell);
partContainer.addPart(spider);
spider.initMouseEvents();
antDog = new AntDog(numMembers, bumblerR, this, anchorPoint, partContainer, shadowShell);
antDog.step(spider.getTrackCoords(), spider.isJumping);
antDog.render();
super();
setUpResize();
onStageResize({});
new DelayedEvent(introDog, 600);
new DelayedEvent(begin, 1);
root.visible = false;
addEventListener("enterFrame", step);
}
public function getMouseCoords(){
var _local1:*;
var _local2:*;
var _local3:*;
_local1 = (-(anchorPoint.pz) / (mouseY - foreGround.y));
if ((((_local1 < 0)) || ((_local1 == Infinity)))){
_local1 = 999999;
};
_local2 = ((_local1 * ThreeDeeCamera.perspex) - anchorPoint.y);
_local3 = (_local1 * (mouseX - foreGround.x));
return ({x:_local3, y:_local2});
}
public function drawMembers(){
spider.customRender(new ThreeDeeTransform());
if (isIntroed){
antDog.render();
};
partContainer.setDepths();
}
function introDog(){
isIntroed = true;
}
function gotoHomePage(_arg1=null){
ShortCuts.gotoUrl("http://www.vectorpark.com");
}
function begin(){
root.visible = true;
}
function setUpResize(){
stage.scaleMode = "noScale";
stage.addEventListener(Event.RESIZE, onStageResize);
}
function step(_arg1=null){
var _local2:*;
checkMousePlacement();
_local2 = getMouseCoords();
spider.step(_local2.x, _local2.y, antDog.getTrackCoords());
if (isIntroed){
antDog.step(spider.getTrackCoords(), spider.isJumping);
};
drawMembers();
}
function checkMousePlacement(){
var _local1:*;
var _local2:*;
_local1 = windowWidth;
_local2 = windowHeight;
if ((((((((mouseX > (_local1 - sideFrameThickness))) || ((mouseX < sideFrameThickness)))) || ((mouseY > (_local2 - bottomFrameThickness))))) || ((mouseY < sideFrameThickness)))){
Mouse.show();
} else {
Mouse.hide();
};
}
public function onSpiderJump(_arg1){
if (_arg1 > 3){
isIntroed = true;
};
antDog.startle(_arg1, spider.getTrackCoords());
}
function onStageResize(_arg1){
var _local2:*;
var _local3:*;
var _local4:*;
var _local5:*;
_local2 = Math.round(stage.stageWidth);
_local3 = Math.round(stage.stageHeight);
windowWidth = Math.min(_local2, 1000);
windowHeight = Math.min(_local3, 700);
corners[0].x = sideFrameThickness;
corners[0].y = sideFrameThickness;
corners[1].x = sideFrameThickness;
corners[1].y = (windowHeight - bottomFrameThickness);
corners[1].rotation = 270;
corners[2].x = (windowWidth - sideFrameThickness);
corners[2].y = (windowHeight - bottomFrameThickness);
corners[2].rotation = 180;
corners[3].x = (windowWidth - sideFrameThickness);
corners[3].y = sideFrameThickness;
corners[3].rotation = 90;
logo.x = ((windowWidth - sideFrameThickness) - 150);
logo.y = ((windowHeight - bottomFrameThickness) + 2);
foreGround.x = (windowWidth / 2);
root.x = ((-((_local2 - 1000)) / 2) + ((_local2 - windowWidth) / 2));
root.y = ((-((_local3 - 700)) / 2) + ((_local3 - windowHeight) / 2));
_local4 = viewMask.graphics;
_local4.clear();
_local4.beginFill(0);
_local4.drawRect(sideFrameThickness, sideFrameThickness, (windowWidth - (sideFrameThickness * 2)), (windowHeight - (sideFrameThickness + bottomFrameThickness)));
_local5 = bg.graphics;
_local5.clear();
_local5.beginFill(Palette.getColor("bg"));
_local5.drawRect(0, 0, windowWidth, windowHeight);
}
}
}//package classes
Section 14
//Spider (classes.Spider)
package classes {
import ThreeDee.*;
import util.*;
public class Spider extends ThreeDeePart {
var compressDistMax;
var legs;
var grav;// = -0.25
var shadowClip;
var depthArr;
var breatheOsc;// = 0
var numLegs;// = 5
var base;
var bounceZ;
var vz;// = 0
var crouchMeterMax;// = 15
var restZ;// = 4
var iVz;// = 0
var legSpin;// = 0.1
var currState;// = "rest"
var baseR;// = 2.5
var baseZ;
var ms;// = false
var straightenFrac;// = 0
var breathFactor;// = 1
var springFactor;// = 3
var head;
var bounceMeter;// = 0
var parentObj;
var bounceMeterMax;// = 15
var crouchMeter;// = 0
public function Spider(_arg1, _arg2, _arg3){
var _local4:*;
var _local5:*;
var _local6:*;
var _local7:*;
baseR = 2.5;
restZ = 4;
numLegs = 5;
ms = false;
vz = 0;
iVz = 0;
grav = -0.25;
springFactor = 3;
crouchMeter = 0;
crouchMeterMax = 15;
straightenFrac = 0;
bounceMeter = 0;
bounceMeterMax = 15;
breatheOsc = 0;
legSpin = 0.1;
breathFactor = 1;
currState = "rest";
super(_arg2);
parentObj = _arg1;
depthArr = [];
_local4 = Palette.getColor("spider");
base = new ThreeDeeOval(anchorPoint, baseR, (baseR * 0.8), "z");
base.setColor(_local4);
base.Z = restZ;
baseZ = restZ;
head = new BeakHead(base, baseR, _local4, _local4, Palette.getColor("spiderEye"));
head.Z = (baseR + (baseR * 0.5));
compressDistMax = -((restZ - (baseR * 0.8)));
shadowClip = new ThreeDeeDisc(anchorPoint, baseR, "z");
_arg3.addChild(shadowClip);
legs = [];
_local5 = 0;
while (_local5 < numLegs) {
_local6 = ((((Math.PI * 2) * _local5) / numLegs) + (Math.PI / 24));
_local7 = new SpiderLeg(base, _local6, (baseR * 1.8), _local4);
_local7.X = (baseR - 0.5);
addChild(_local7);
legs.push(_local7);
depthArr.push(_local7);
_local5++;
};
addChild(base);
addChild(head);
depthArr.push(base);
depthArr.push(head);
X = -2000;
}
function doStep(_arg1, _arg2){
var _local3:*;
var _local4:*;
var _local5:*;
straightenFrac = 0;
if (currState == "rest"){
breathFactor = 1;
if (ms){
currState = "crouch";
crouchMeter = 0;
_arg1 = 0;
};
_arg1 = 0;
} else {
if (currState == "crouch"){
if (!ms){
currState = "spring";
vz = 0;
breathFactor = 0;
} else {
if (crouchMeter < crouchMeterMax){
crouchMeter++;
};
_local3 = Curves.easeOut((crouchMeter / crouchMeterMax));
_local4 = (compressDistMax * _local3);
_arg2 = (restZ + _local4);
breathFactor = (1 - _local3);
};
_arg1 = 0;
} else {
if (currState == "spring"){
vz = (vz + ((restZ - _arg2) * springFactor));
_arg2 = (_arg2 + (vz * _arg1));
if (_arg2 > restZ){
currState = "leap";
_arg1 = ((_arg2 - restZ) / vz);
_arg2 = restZ;
iVz = vz;
parentObj.onSpiderJump(vz);
} else {
_arg1 = 0;
};
if (vz == 0){
currState = "rest";
};
} else {
if (currState == "leap"){
vz = (vz + (grav * _arg1));
_arg2 = (_arg2 + (vz * _arg1));
if (_arg2 < restZ){
currState = "bounce";
_arg1 = ((_arg2 - restZ) / vz);
_arg2 = restZ;
bounceMeter = 0;
bounceZ = restZ;
} else {
straightenFrac = (1 - Math.abs((vz / iVz)));
_arg1 = 0;
};
} else {
if (currState == "bounce"){
bounceMeter = (bounceMeter + _arg1);
if (bounceMeter > bounceMeterMax){
bounceMeter = bounceMeterMax;
};
vz = (vz * Math.pow(0.5, _arg1));
bounceZ = (bounceZ + (vz * _arg1));
_local5 = Curves.scurve((bounceMeter / bounceMeterMax));
_arg2 = ((bounceZ * (1 - _local5)) + (restZ * _local5));
if (bounceMeter == bounceMeterMax){
currState = "rest";
};
breathFactor = Curves.scurve((bounceMeter / bounceMeterMax));
_arg1 = 0;
};
};
};
};
};
if (_arg1 > 0){
return (doStep(_arg1, _arg2));
};
return (_arg2);
}
public function getTrackCoords(){
return ({x:px, y:py, z:(pz + base.Z)});
}
public function customRender(_arg1){
var _local2:*;
var _local3:*;
base.customRender(_arg1);
head.customLocate(_arg1);
head.render(-1);
for each (_local2 in legs) {
_local2.render();
};
shadowClip.locate();
shadowClip.customRender(_arg1);
depthArr.sortOn("depth");
_local3 = 0;
while (_local3 < depthArr.length) {
setChildIndex(depthArr[_local3], _local3);
_local3++;
};
}
public function get isJumping(){
return (((!((currState == "rest"))) && (!((currState == "crouch")))));
}
function get isAirborne(){
return ((base.Z > restZ));
}
public function setLegStraighten(_arg1){
var _local2:*;
for each (_local2 in legs) {
_local2.setStraighten((_arg1 * 0.5));
};
}
public function step(_arg1, _arg2, _arg3){
var _local4:*;
var _local5:*;
var _local6:*;
var _local7:*;
var _local8:*;
_local4 = ((_arg1 + (X * 3)) / 4);
_local5 = ((_arg2 + (Y * 3)) / 4);
_local6 = new Vector((_local4 - X), (_local5 - Y));
X = _local4;
Y = _local5;
locate();
baseZ = doStep(1, baseZ);
breatheOsc = (breatheOsc + 0.1);
_local7 = (((((1 - Math.cos(breatheOsc)) - 0.5) * 2) * 0.15) * breathFactor);
base.Z = (baseZ + _local7);
base.locate();
head.lookStep(_arg3, 0);
for each (_local8 in legs) {
_local8.step((baseZ + _local7), _local6.copy());
if (straightenFrac != 0){
setLegStraighten(straightenFrac);
};
if (currState == "leap"){
_local8.facing = (_local8.facing + legSpin);
};
if (Math.sin(_local8.facing) > 0){
ColorTools.setTint(_local8, Palette.getColor("bg"), (Math.sin(_local8.facing) / 5));
} else {
ColorTools.setTint(_local8, Palette.getColor("bg"), 0);
};
};
}
public function initMouseEvents(){
stage.addEventListener("mouseDown", onMouseDownEvent);
stage.addEventListener("mouseUp", onMouseUpEvent);
}
function onMouseDownEvent(_arg1){
ms = true;
}
function onMouseUpEvent(_arg1){
ms = false;
}
}
}//package classes
Section 15
//SpiderLeg (classes.SpiderLeg)
package classes {
import ThreeDee.*;
import util.*;
public class SpiderLeg extends ThreeDeePart {
var transitCounterMax;
var foot;
var stillTimer;// = 0
var stickRange;
var transitCounter;// = 0
var drawShape;
var stickCoords;
var base;
var oStickCoords;
var inTransit;// = false
var knee;
var baseExt;
var segLength;
public var facing;
var legColor;
public function SpiderLeg(_arg1, _arg2, _arg3, _arg4){
inTransit = false;
transitCounter = 0;
stillTimer = 0;
super(_arg1);
legColor = _arg4;
stickCoords = new Vector(0, 0);
oStickCoords = {x:0, y:0};
stickRange = (_arg3 * 1.5);
segLength = _arg3;
facing = _arg2;
baseExt = _arg3;
base = new ThreeDeePoint(anchorPoint);
knee = new ThreeDeePoint(anchorPoint);
foot = new ThreeDeePoint(anchorPoint);
drawShape = new ThreeDeeDrawShell(0.1);
addChild(drawShape);
}
public function step(_arg1, _arg2){
var _local3:*;
var _local4:*;
var _local5:*;
var _local6:*;
var _local7:*;
var _local8:*;
var _local9:*;
var _local10:*;
customLocate(new ThreeDeeTransform({z:facing}));
_local3 = Math.max((_arg1 - (segLength * 1.5)), 0);
base.z = 0;
if (((!(inTransit)) && ((_local3 == 0)))){
_arg2 = _arg2.rotate(facing);
stickCoords.minus(_arg2);
_local5 = stickCoords.getAngle();
_local6 = stickCoords.getMag();
_local7 = _arg2.getAngle();
_local8 = _arg2.getMag();
if (_local6 > stickRange){
stickCoords.x = ((((Math.random() - 0.5) * 0.5) + (0.5 * Math.cos(_local7))) * stickRange);
stickCoords.y = ((((Math.random() - 0.5) * 0.5) + (0.5 * Math.sin(_local7))) * stickRange);
inTransit = true;
transitCounter = 0;
transitCounterMax = 6;
};
if (((!(inTransit)) && ((_local8 < 0.1)))){
stillTimer--;
if (stillTimer == 0){
stickCoords.x = (stickRange / 3);
stickCoords.y = 0;
inTransit = true;
transitCounter = 0;
transitCounterMax = 12;
};
} else {
stillTimer = Math.round(((Math.random() * 30) + 5));
};
};
if (inTransit){
transitCounter++;
_local9 = (transitCounter / transitCounterMax);
_local10 = Curves.scurve(_local9);
foot.x = ((baseExt + (stickCoords.x * _local10)) + (oStickCoords.x * (1 - _local10)));
foot.y = ((stickCoords.y * _local10) + (oStickCoords.y * (1 - _local10)));
foot.z = (((2 * Curves.scurve((_local9 * 2))) + _local3) - _arg1);
if (transitCounter == transitCounterMax){
inTransit = false;
};
} else {
foot.x = (baseExt + stickCoords.x);
foot.y = stickCoords.y;
foot.z = ((0 + _local3) - _arg1);
oStickCoords = {x:stickCoords.x, y:stickCoords.y};
};
_local4 = ThreeDeeLimbUtil.getKneeCoords(base, foot, segLength);
knee.x = _local4.x;
knee.y = _local4.y;
knee.z = _local4.z;
}
public function setStraighten(_arg1){
var _local2:*;
var _local3:*;
var _local4:*;
var _local5:*;
_local2 = Math.atan2((knee.z - base.z), (knee.x - base.x));
_local3 = Math.atan2((foot.z - knee.z), (foot.x - knee.x));
_local4 = ((_local2 * (1 - _arg1)) + (0 * _arg1));
_local5 = ((_local3 * (1 - _arg1)) + (0 * _arg1));
knee.x = (base.x + (segLength * Math.cos(_local4)));
knee.z = (base.z + (segLength * Math.sin(_local4)));
foot.x = (knee.x + (segLength * Math.cos(_local5)));
foot.z = (knee.z + (segLength * Math.sin(_local5)));
}
public function render(){
var _local1:*;
var _local2:*;
_local1 = new ThreeDeeTransform({z:facing});
base.customLocate(_local1);
knee.customLocate(_local1);
foot.customLocate(_local1);
_local2 = drawShape;
_local2.clear();
_local2.lineStyle((1 * base.depth), legColor);
_local2.moveTo(base.vx, base.vy);
_local2.lineTo((((knee.vx * 2) + base.vx) / 3), (((knee.vy * 2) + base.vy) / 3));
_local2.curveTo(knee.vx, knee.vy, (((knee.vx * 2) + foot.vx) / 3), (((knee.vy * 2) + foot.vy) / 3));
_local2.lineTo(foot.vx, foot.vy);
}
}
}//package classes
Section 16
//WalkLeg (classes.WalkLeg)
package classes {
import util.*;
public class WalkLeg {
var _yOff;
var _swingArcLength;
var _touchY;// = 0
var _swingOffsetY;
var _groundArcRad;
public var footX;// = 0
public var footY;// = 0
var _groundLength;
public var footZ;// = 0
var _totalWalkLength;
var _onHit;
var _addOsc;
var _osc;
var iFootX;// = 0
var _swingArcRad;
var iFootY;// = 0
public var footTip;
var _dir;
var _currWalkDist;
var _baseSwingRadius;
var _groundY;
var currMode;
var _footTipMax;
var _swingRadius;
public function WalkLeg(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7=null){
_touchY = 0;
footX = 0;
footY = 0;
iFootX = 0;
iFootY = 0;
footZ = 0;
super();
_dir = _arg1;
_yOff = _arg2;
_baseSwingRadius = _arg3;
_osc = _arg6;
_footTipMax = _arg5;
_onHit = _arg7;
_groundArcRad = _arg4;
setStrideFactor(1.2);
}
function initStride(){
_swingArcRad = ((2 * Math.PI) - _groundArcRad);
_swingOffsetY = (_touchY - (_swingRadius * Math.cos((_groundArcRad / 2))));
_swingArcLength = (_swingArcRad * _swingRadius);
_groundLength = ((Math.sin((_groundArcRad / 2)) * _swingRadius) * 2);
_totalWalkLength = (_swingArcLength + _groundLength);
_currWalkDist = (_totalWalkLength * _osc);
}
public function setStrideFactor(_arg1){
_swingRadius = (_baseSwingRadius * Math.max(_arg1, 1E-6));
initStride();
}
function setAirCoords(_arg1){
var _local2:*;
var _local3:*;
_local2 = Curves.scurve(_arg1);
_local3 = (((_swingArcRad / 2) - (Math.PI / 2)) - (_swingArcRad * _arg1));
footX = ((iFootX * (1 - _local2)) + ((_groundLength / 2) * _local2));
footY = ((iFootY * (1 - _local2)) + (_yOff * _local2));
footZ = (((Math.sin(_local3) * _swingRadius) + _swingOffsetY) * 0.75);
}
public function step(_arg1, _arg2, _arg3=false){
var _local4:*;
var _local5:*;
var _local6:*;
var _local7:*;
var _local8:*;
var _local9:*;
_local4 = 1;
_local5 = (_arg1 / _totalWalkLength);
_addOsc = (_local5 * _local4);
_osc = (_osc + _addOsc);
if (_osc > 1){
_osc = (_osc - 1);
};
_currWalkDist = (_totalWalkLength * _osc);
if (_currWalkDist > _totalWalkLength){
_currWalkDist = (_currWalkDist - _totalWalkLength);
};
if (_currWalkDist < _groundLength){
if (currMode == "air"){
setAirCoords(1);
if (((!((_onHit == null))) && ((_arg1 > 1)))){
_onHit();
};
};
currMode = "ground";
_local6 = ((-(_swingArcRad) / 2) - (Math.PI / 2));
_local7 = (footX - (_arg1 * Math.cos(_arg2)));
_local8 = (footY - (_arg1 * Math.sin(_arg2)));
footX = ((_local7 * Math.cos(_arg2)) + (_local8 * Math.sin(_arg2)));
footY = ((_local8 * Math.cos(_arg2)) - (_local7 * Math.sin(_arg2)));
footZ = ((Math.sin(_local6) * _swingRadius) + _swingOffsetY);
footTip = 0;
} else {
if (currMode == "ground"){
iFootX = footX;
iFootY = footY;
};
currMode = "air";
_local9 = ((_currWalkDist - _groundLength) / _swingArcLength);
setAirCoords(_local9);
footTip = (Math.sin(((_local9 * Math.PI) * 2)) * _footTipMax);
};
}
public function get osc(){
return (_osc);
}
}
}//package classes
Section 17
//Color (fl.motion.Color)
package fl.motion {
import flash.geom.*;
import flash.display.*;
public class Color extends ColorTransform {
private var _tintMultiplier:Number;// = 0
private var _tintColor:Number;// = 0
public function Color(_arg1:Number=1, _arg2:Number=1, _arg3:Number=1, _arg4:Number=1, _arg5:Number=0, _arg6:Number=0, _arg7:Number=0, _arg8:Number=0){
_tintColor = 0;
_tintMultiplier = 0;
super(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7, _arg8);
}
public function setTint(_arg1:uint, _arg2:Number):void{
var _local3:uint;
var _local4:uint;
var _local5:uint;
this._tintColor = _arg1;
this._tintMultiplier = _arg2;
this.redMultiplier = (this.greenMultiplier = (this.blueMultiplier = (1 - _arg2)));
_local3 = ((_arg1 >> 16) & 0xFF);
_local4 = ((_arg1 >> 8) & 0xFF);
_local5 = (_arg1 & 0xFF);
this.redOffset = Math.round((_local3 * _arg2));
this.greenOffset = Math.round((_local4 * _arg2));
this.blueOffset = Math.round((_local5 * _arg2));
}
public function set tintColor(_arg1:uint):void{
this.setTint(_arg1, this.tintMultiplier);
}
public function get brightness():Number{
return ((this.redOffset) ? (1 - this.redMultiplier) : (this.redMultiplier - 1));
}
private function deriveTintColor():uint{
var _local1:Number;
var _local2:uint;
var _local3:uint;
var _local4:uint;
var _local5:uint;
_local1 = (1 / this.tintMultiplier);
_local2 = Math.round((this.redOffset * _local1));
_local3 = Math.round((this.greenOffset * _local1));
_local4 = Math.round((this.blueOffset * _local1));
_local5 = (((_local2 << 16) | (_local3 << 8)) | _local4);
return (_local5);
}
public function get tintMultiplier():Number{
return (this._tintMultiplier);
}
public function get tintColor():uint{
return (this._tintColor);
}
public function set brightness(_arg1:Number):void{
var _local2:Number;
var _local3:Number;
if (_arg1 > 1){
_arg1 = 1;
} else {
if (_arg1 < -1){
_arg1 = -1;
};
};
_local2 = (1 - Math.abs(_arg1));
_local3 = 0;
if (_arg1 > 0){
_local3 = (_arg1 * 0xFF);
};
this.redMultiplier = (this.greenMultiplier = (this.blueMultiplier = _local2));
this.redOffset = (this.greenOffset = (this.blueOffset = _local3));
}
public function set tintMultiplier(_arg1:Number):void{
this.setTint(this.tintColor, _arg1);
}
private function parseXML(_arg1:XML=null):Color{
var _local2:XML;
var _local3:XML;
var _local4:String;
var _local5:uint;
if (!_arg1){
return (this);
};
_local2 = _arg1.elements()[0];
if (!_local2){
return (this);
};
for each (_local3 in _local2.attributes()) {
_local4 = _local3.localName();
if (_local4 == "tintColor"){
_local5 = (Number(_local3.toString()) as uint);
this.tintColor = _local5;
} else {
this[_local4] = Number(_local3.toString());
};
};
return (this);
}
public static function interpolateColor(_arg1:uint, _arg2:uint, _arg3:Number):uint{
var _local4:Number;
var _local5:uint;
var _local6:uint;
var _local7:uint;
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 _local16:uint;
var _local17:uint;
_local4 = (1 - _arg3);
_local5 = ((_arg1 >> 24) & 0xFF);
_local6 = ((_arg1 >> 16) & 0xFF);
_local7 = ((_arg1 >> 8) & 0xFF);
_local8 = (_arg1 & 0xFF);
_local9 = ((_arg2 >> 24) & 0xFF);
_local10 = ((_arg2 >> 16) & 0xFF);
_local11 = ((_arg2 >> 8) & 0xFF);
_local12 = (_arg2 & 0xFF);
_local13 = ((_local5 * _local4) + (_local9 * _arg3));
_local14 = ((_local6 * _local4) + (_local10 * _arg3));
_local15 = ((_local7 * _local4) + (_local11 * _arg3));
_local16 = ((_local8 * _local4) + (_local12 * _arg3));
_local17 = ((((_local13 << 24) | (_local14 << 16)) | (_local15 << 8)) | _local16);
return (_local17);
}
public static function interpolateTransform(_arg1:ColorTransform, _arg2:ColorTransform, _arg3:Number):ColorTransform{
var _local4:Number;
var _local5:ColorTransform;
_local4 = (1 - _arg3);
_local5 = new ColorTransform(((_arg1.redMultiplier * _local4) + (_arg2.redMultiplier * _arg3)), ((_arg1.greenMultiplier * _local4) + (_arg2.greenMultiplier * _arg3)), ((_arg1.blueMultiplier * _local4) + (_arg2.blueMultiplier * _arg3)), ((_arg1.alphaMultiplier * _local4) + (_arg2.alphaMultiplier * _arg3)), ((_arg1.redOffset * _local4) + (_arg2.redOffset * _arg3)), ((_arg1.greenOffset * _local4) + (_arg2.greenOffset * _arg3)), ((_arg1.blueOffset * _local4) + (_arg2.blueOffset * _arg3)), ((_arg1.alphaOffset * _local4) + (_arg2.alphaOffset * _arg3)));
return (_local5);
}
public static function fromXML(_arg1:XML):Color{
return (Color(new (Color).parseXML(_arg1)));
}
}
}//package fl.motion
Section 18
//discShapeInner_6 (spider_fla.discShapeInner_6)
package spider_fla {
import flash.display.*;
public dynamic class discShapeInner_6 extends MovieClip {
public var subShape:circle;
}
}//package spider_fla
Section 19
//ThreeDeeCamera (ThreeDee.ThreeDeeCamera)
package ThreeDee {
public class ThreeDeeCamera {
public static var perspex = 1000;
}
}//package ThreeDee
Section 20
//ThreeDeeCircle (ThreeDee.ThreeDeeCircle)
package ThreeDee {
public class ThreeDeeCircle extends ThreeDeeElement {
public var r;
public var shape;
public function ThreeDeeCircle(_arg1, _arg2){
super(_arg1);
buildShape();
radius = _arg2;
}
override public function setColor(_arg1){
super.setColor(_arg1);
shapeShell.graphics.clear();
buildShape();
}
public function set radius(_arg1){
r = _arg1;
}
public function drawCircle(_arg1, _arg2){
var _local3:*;
var _local4:*;
var _local5:*;
var _local6:*;
var _local7:*;
var _local8:*;
var _local9:*;
_local3 = (_arg2 * 1.08);
_local4 = 8;
_arg1.moveTo(_arg2, 0);
_local5 = 1;
while (_local5 <= _local4) {
_local6 = (_local5 / _local4);
_local7 = ((_local5 - 0.5) / _local4);
_local8 = ((Math.PI * 2) * _local6);
_local9 = ((Math.PI * 2) * _local7);
_arg1.curveTo((Math.cos(_local9) * _local3), (Math.sin(_local9) * _local3), (Math.cos(_local8) * _arg2), (Math.sin(_local8) * _arg2));
_local5++;
};
}
public function customRender(_arg1){
sizeAndPlace();
}
public function sizeAndPlace(_arg1=1){
var _local2:*;
shapeShell.x = anchorPoint.vx;
shapeShell.y = anchorPoint.vy;
_local2 = (anchorPoint.depth * _arg1);
shapeShell.scaleX = ((r / 50) * _local2);
shapeShell.scaleY = ((r / 50) * _local2);
}
public function render(){
sizeAndPlace();
}
public function get radius(){
return (r);
}
function buildShape(){
shapeShell.graphics.beginFill(baseColor);
drawCircle(shapeShell.graphics, 50);
}
}
}//package ThreeDee
Section 21
//ThreeDeeCone (ThreeDee.ThreeDeeCone)
package ThreeDee {
public class ThreeDeeCone extends ThreeDeePart {
public var l;
var tipColor;
var disc;
public var tipPt;
public function ThreeDeeCone(_arg1, _arg2, _arg3, _arg4="x", _arg5=1){
super(_arg1);
l = _arg3;
tipPt = new ThreeDeePoint(anchorPoint);
tipPt.setCoord(_arg4, (_arg3 * _arg5));
disc = new ThreeDeeDisc(anchorPoint, _arg2, _arg4, _arg5);
addChild(disc);
}
public function customRender(_arg1){
disc.customLocate(_arg1);
disc.customRender(_arg1);
tipPt.customLocate(_arg1);
drawTip();
}
public function setColors(_arg1, _arg2){
tipColor = _arg2;
disc.setColors(_arg1, _arg2);
}
function drawTip(){
var _local1:*;
var _local2:*;
var _local3:*;
_local1 = this.graphics;
_local1.clear();
_local2 = ThreeDeeMaths.getTangentPointToDisc(tipPt, disc, 1);
_local3 = ThreeDeeMaths.getTangentPointToDisc(tipPt, disc, -1);
_local1.moveTo(tipPt.vx, tipPt.vy);
_local1.beginFill(tipColor);
_local1.lineTo(_local2.vx, _local2.vy);
_local1.lineTo(_local3.vx, _local3.vy);
_local1.lineTo(tipPt.vx, tipPt.vy);
_local1.endFill();
}
}
}//package ThreeDee
Section 22
//ThreeDeeDisc (ThreeDee.ThreeDeeDisc)
package ThreeDee {
public class ThreeDeeDisc extends ThreeDeeCircle {
var lastColorCache;// = null
public var normalDir;
public var oneSided;// = false
public var subShape;
public var squish;
public var sideFace;
public var rote;
var colors;// = false
public var subShadow;
public var normal;
public function ThreeDeeDisc(_arg1, _arg2, _arg3="x", _arg4=1){
oneSided = false;
colors = false;
lastColorCache = null;
super(_arg1, _arg2);
normalDir = _arg4;
normal = new ThreeDeePoint(anchorPoint);
normal.setCoord(_arg3, (1 * _arg4));
}
override public function setColor(_arg1){
if (_arg1 == lastColorCache){
return;
};
super.setColor(_arg1);
lastColorCache = _arg1;
}
public function squash(){
var _local1:*;
var _local2:*;
var _local3:*;
var _local4:*;
_local1 = (normal.vx - anchorPoint.vx);
_local2 = (normal.vy - anchorPoint.vy);
_local3 = Math.sqrt((((normal.px * normal.px) + (normal.py * normal.py)) + (normal.pz * normal.pz)));
_local4 = Math.sqrt((((anchorPoint.px * anchorPoint.px) + (anchorPoint.py * anchorPoint.py)) + (anchorPoint.pz * anchorPoint.pz)));
squish = (_local3 - _local4);
rote = Math.atan2(_local2, _local1);
}
override public function customRender(_arg1){
normal.customLocate(_arg1);
squash();
sizeAndPlace();
applyColors();
}
public function renderSquash(){
shapeShell.scaleX = (shapeShell.scaleX * squish);
shapeShell.rotation = ((rote / Math.PI) * 180);
}
function applyColors(){
if (((oneSided) && ((squish < 0)))){
visible = false;
} else {
visible = true;
};
if (colors != false){
if (squish > 0){
setColor(colors[0]);
} else {
setColor(colors[1]);
};
};
}
public function setColors(_arg1, _arg2){
colors = [_arg1, _arg2];
}
override public function sizeAndPlace(_arg1=1){
shapeShell.rotation = 0;
super.sizeAndPlace(_arg1);
renderSquash();
}
override public function render(){
normal.locate();
squash();
sizeAndPlace();
applyColors();
}
function sideCheck(){
return (((squish > 0)) ? 1 : -1);
}
}
}//package ThreeDee
Section 23
//ThreeDeeDome (ThreeDee.ThreeDeeDome)
package ThreeDee {
public class ThreeDeeDome extends ThreeDeePart {
var base;
var semiCircle;
public function ThreeDeeDome(_arg1, _arg2, _arg3="x", _arg4=1){
super(_arg1);
semiCircle = new semiCircleShape();
base = new ThreeDeeDisc(anchorPoint, _arg2, _arg3, _arg4);
shapeShell.addChild(semiCircle);
shapeShell.addChild(base);
}
public function set radius(_arg1){
base.radius = _arg1;
}
public function customRender(_arg1){
base.locate();
base.customRender(_arg1);
semiCircle.x = base.vx;
semiCircle.y = base.vy;
semiCircle.rotation = 0;
semiCircle.width = (base.radius * depth);
semiCircle.height = ((base.radius * depth) * 2);
semiCircle.rotation = base.rotation;
}
public function setColors(_arg1, _arg2){
setColor(_arg2, semiCircle);
base.setColors(_arg1, _arg2);
}
public function get radius(){
return (base.radius);
}
}
}//package ThreeDee
Section 24
//ThreeDeeDrawShell (ThreeDee.ThreeDeeDrawShell)
package ThreeDee {
import flash.display.*;
public class ThreeDeeDrawShell extends Shape {
var _scl;// = 1
public function ThreeDeeDrawShell(_arg1=1){
_scl = 1;
super();
_scl = _arg1;
scaleX = _arg1;
scaleY = _arg1;
}
public function lineStyle(_arg1, _arg2, _arg3=1){
graphics.lineStyle((_arg1 / _scl), _arg2, _arg3);
}
public function endFill(){
graphics.endFill();
}
public function moveTo(_arg1, _arg2){
graphics.moveTo((_arg1 / _scl), (_arg2 / _scl));
}
public function lineTo(_arg1, _arg2){
graphics.lineTo((_arg1 / _scl), (_arg2 / _scl));
}
public function beginFill(_arg1, _arg2=1){
graphics.beginFill(_arg1, _arg2);
}
public function clear(){
graphics.clear();
}
public function curveTo(_arg1, _arg2, _arg3, _arg4){
graphics.curveTo((_arg1 / _scl), (_arg2 / _scl), (_arg3 / _scl), (_arg4 / _scl));
}
}
}//package ThreeDee
Section 25
//ThreeDeeElement (ThreeDee.ThreeDeeElement)
package ThreeDee {
import flash.geom.*;
import flash.display.*;
import util.*;
public class ThreeDeeElement extends Shape {
public var baseColor;// = 0xFFFFFF
var shadowColor;
var shapeShell;
public var depthPoint;
public var anchorPoint;
var myShadow;
public function ThreeDeeElement(_arg1){
baseColor = 0xFFFFFF;
super();
if (_arg1 != false){
setAnchor(new ThreeDeePoint(_arg1, 0, 0, 0));
};
shapeShell = this;
}
public function get px(){
return (anchorPoint.px);
}
public function get py(){
return (anchorPoint.py);
}
public function get pz(){
return (anchorPoint.pz);
}
public function get iY(){
return (anchorPoint.iy);
}
public function get iZ(){
return (anchorPoint.iz);
}
public function getCoords(){
return ({x:anchorPoint.x, y:anchorPoint.y, z:anchorPoint.z});
}
public function setCoords(_arg1, _arg2, _arg3, _arg4=false){
anchorPoint.x = _arg1;
anchorPoint.y = _arg2;
anchorPoint.z = _arg3;
if (_arg4){
anchorPoint.ix = _arg1;
anchorPoint.iy = _arg2;
anchorPoint.iz = _arg3;
};
}
public function setColor(_arg1){
baseColor = _arg1;
}
public function customLocate(_arg1){
anchorPoint.customLocate(_arg1);
}
public function setX(_arg1){
anchorPoint.x = _arg1;
}
public function setY(_arg1){
anchorPoint.y = _arg1;
}
public function setZ(_arg1){
anchorPoint.z = _arg1;
}
public function addShadow(_arg1, _arg2=0){
myShadow = getShadowClip();
_arg1.addChild(myShadow);
shadowColor = _arg2;
}
public function get iX(){
return (anchorPoint.ix);
}
public function locate(){
anchorPoint.locate();
}
public function get X(){
return (anchorPoint.x);
}
public function get Y(){
return (anchorPoint.y);
}
public function get Z(){
return (anchorPoint.z);
}
public function get focalDepth(){
return (anchorPoint.focalDepth);
}
public function setTint(_arg1, _arg2){
ColorTools.setTint(this, _arg1, _arg2);
}
public function getShadowClip(){
return (new Shape());
}
public function set X(_arg1){
anchorPoint.x = _arg1;
}
public function set Y(_arg1){
anchorPoint.y = _arg1;
}
public function setCoord(_arg1, _arg2){
anchorPoint.setCoord(_arg1, _arg2);
}
public function set Z(_arg1){
anchorPoint.z = _arg1;
}
public function setAnchor(_arg1){
anchorPoint = _arg1;
depthPoint = _arg1;
}
public function get vx(){
return (anchorPoint.vx);
}
public function get vy(){
return (anchorPoint.vy);
}
public function getZ(){
return (anchorPoint.z);
}
public function getX(){
return (anchorPoint.x);
}
public function getY(){
return (anchorPoint.y);
}
public function get rootPoint(){
return (anchorPoint.rootPoint);
}
public function get depth(){
return (depthPoint.depth);
}
public function setPCoords(_arg1, _arg2, _arg3){
anchorPoint.x = (_arg1 - anchorPoint._p.px);
anchorPoint.y = (_arg2 - anchorPoint._p.py);
anchorPoint.z = (_arg3 - anchorPoint._p.pz);
}
}
}//package ThreeDee
Section 26
//ThreeDeeLimbUtil (ThreeDee.ThreeDeeLimbUtil)
package ThreeDee {
public class ThreeDeeLimbUtil {
public static function getKneeCoords(_arg1, _arg2, _arg3){
var _local4:*;
var _local5:*;
var _local6:*;
var _local7:*;
var _local8:*;
var _local9:*;
_local4 = (_arg2.x - _arg1.x);
_local5 = (_arg2.z - _arg1.z);
_local6 = ((Math.PI / 2) - Math.atan2(_local5, _local4));
_local7 = (Math.sqrt(((_local4 * _local4) + (_local5 * _local5))) / 2);
_local8 = -(Math.sqrt(((_arg3 * _arg3) - (_local7 * _local7))));
_local9 = _local7;
if (isNaN(_local8)){
_local8 = 0;
};
return ({x:((_arg1.x + (_local8 * Math.cos(_local6))) + (_local9 * Math.sin(_local6))), z:((_arg1.z + (_local9 * Math.cos(_local6))) - (_local8 * Math.sin(_local6))), y:((_arg1.y + _arg2.y) / 2)});
}
}
}//package ThreeDee
Section 27
//ThreeDeeMaths (ThreeDee.ThreeDeeMaths)
package ThreeDee {
import util.*;
public class ThreeDeeMaths {
public static function getTangentPointToDisc(_arg1, _arg2, _arg3){
var _local4:*;
var _local5:*;
var _local6:*;
var _local7:*;
var _local8:*;
var _local9:*;
var _local10:*;
var _local11:*;
var _local12:*;
var _local13:*;
var _local14:*;
_local4 = (_arg1.vx - _arg2.vx);
_local5 = (_arg1.vy - _arg2.vy);
_local6 = -(_arg2.rote);
_local7 = ((_local4 * Math.cos(-(_local6))) + (_local5 * Math.sin(-(_local6))));
_local8 = ((_local5 * Math.cos(-(_local6))) - (_local4 * Math.sin(-(_local6))));
_local9 = (_arg2.radius * _arg2.depth);
_local10 = Math.abs(_arg2.squish);
_local11 = Maths.findTangent((_local7 / _local10), _local8, _local9, _arg3);
_local12 = {vx:_local11.x, vy:_local11.y};
{vx:_local11.x, vy:_local11.y}.vx = (_local12.vx * _local10);
_local13 = _local12.vx;
_local14 = _local12.vy;
_local12.vx = ((_local13 * Math.cos(_local6)) + (_local14 * Math.sin(_local6)));
_local12.vy = ((_local14 * Math.cos(_local6)) - (_local13 * Math.sin(_local6)));
_local12.vx = (_local12.vx + _arg2.vx);
_local12.vy = (_local12.vy + _arg2.vy);
return (_local12);
}
public static function getTangentPointToCircle(_arg1, _arg2, _arg3, _arg4=0){
var _local5:*;
var _local6:*;
var _local7:*;
_local5 = (_arg1.vx - _arg2.vx);
_local6 = (_arg1.vy - _arg2.vy);
_local7 = Maths.findTangent(_local5, _local6, ((_arg2.radius - _arg4) * _arg2.depth), _arg3);
return ({vx:_local7.x, vy:_local7.y});
}
public static function getThreeDeeFromTwoDeeWithPy(_arg1, _arg2, _arg3){
var _local4:*;
var _local5:*;
var _local6:*;
_local4 = (ThreeDeeCamera.perspex / _arg3);
_local5 = (_arg1 / _local4);
_local6 = (-(_arg2) / _local4);
return ({x:_local5, y:_arg3, z:_local6});
}
public static function getThreeDeeFromTwoDeeWithPz(_arg1, _arg2, _arg3){
var _local4:*;
var _local5:*;
var _local6:*;
_local4 = (-(_arg3) / _arg2);
if ((((_local4 < 0)) || ((_local4 == Infinity)))){
_local4 = 999999;
};
_local5 = (_local4 * ThreeDeeCamera.perspex);
_local6 = (_local4 * _arg2);
return ({x:_local6, y:_local5, z:_arg3});
}
}
}//package ThreeDee
Section 28
//ThreeDeeObject (ThreeDee.ThreeDeeObject)
package ThreeDee {
class ThreeDeeObject {
var sqrt;
var abs;
var cos;
var atan2;
var sin;
public var PI;// = 3.14159265358979
function ThreeDeeObject(){
PI = Math.PI;
sqrt = Math.sqrt;
abs = Math.abs;
atan2 = Math.atan2;
sin = Math.sin;
cos = Math.cos;
super();
}
function piWrap(_arg1){
if (_arg1 > PI){
_arg1 = (_arg1 - (PI * 2));
} else {
if (_arg1 < -(PI)){
_arg1 = (_arg1 + (PI * 2));
};
};
return (_arg1);
}
function pyt(_arg1, _arg2){
return (Math.sqrt(((_arg1 * _arg1) + (_arg2 * _arg2))));
}
function sCurve(_arg1){
return (((-(cos((_arg1 * PI))) + 1) / 2));
}
}
}//package ThreeDee
Section 29
//ThreeDeeOval (ThreeDee.ThreeDeeOval)
package ThreeDee {
public class ThreeDeeOval extends ThreeDeeDisc {
var radius2;
public function ThreeDeeOval(_arg1, _arg2, _arg3, _arg4="x"){
super(_arg1, _arg2, _arg4);
radius2 = _arg3;
}
override public function squash(){
var _local1:*;
var _local2:*;
var _local3:*;
_local1 = ((normal.vx - vx) / ((depth + normal.depth) / 2));
_local2 = ((normal.vy - vy) / ((depth + normal.depth) / 2));
_local3 = Math.sqrt(((_local1 * _local1) + (_local2 * _local2)));
squish = (1 + (((radius2 - radius) / radius) * _local3));
rote = Math.atan2(_local2, _local1);
}
}
}//package ThreeDee
Section 30
//ThreeDeePart (ThreeDee.ThreeDeePart)
package ThreeDee {
import flash.geom.*;
import flash.display.*;
import util.*;
public class ThreeDeePart extends ThreeDeePartContainer {
public var currMaskName;// = null
public var myShadow;
public var shapeShell;
var shadowColor;
public var innerForm;
public var myMask;// = null
public var anchorPoint;
public var maskKey;// = null
public function ThreeDeePart(_arg1){
myMask = null;
currMaskName = null;
maskKey = null;
super();
if (_arg1 != false){
setAnchor(new ThreeDeePoint(_arg1, 0, 0, 0));
};
shapeShell = getShapeShell();
}
public function getShapeShell(){
return (this);
}
public function get px(){
return (anchorPoint.px);
}
public function get py(){
return (anchorPoint.py);
}
public function locateRote(_arg1){
anchorPoint.locateRote(_arg1);
}
public function setPCoords(_arg1, _arg2, _arg3){
anchorPoint.x = (_arg1 - anchorPoint._p.px);
anchorPoint.y = (_arg2 - anchorPoint._p.py);
anchorPoint.z = (_arg3 - anchorPoint._p.pz);
}
public function get iY(){
return (anchorPoint.iy);
}
public function get pz(){
return (anchorPoint.pz);
}
public function set depthPoint(_arg1){
depthRef = _arg1;
}
public function getCoords(){
return ({x:anchorPoint.x, y:anchorPoint.y, z:anchorPoint.z});
}
public function maskOff(){
if (myMask == null){
return;
};
removeChild(myMask);
myMask = null;
currMaskName = null;
this.mask = null;
}
public function sizeAndPlaceShadow(_arg1=1){
var _local2:*;
myShadow.x = anchorPoint.vx;
myShadow.y = anchorPoint.vys;
_local2 = (anchorPoint.depth * _arg1);
myShadow.scaleX = _local2;
myShadow.scaleY = (anchorPoint.sq * _local2);
}
public function maskOn(_arg1="default"){
if (currMaskName == _arg1){
return;
};
if (myMask != null){
removeChild(myMask);
};
myMask = maskKey[_arg1];
addChild(myMask);
this.mask = myMask;
}
public function get iZ(){
return (anchorPoint.iz);
}
public function moveTo(_arg1, _arg2){
_arg1.moveTo(_arg2.vx, _arg2.vy);
}
public function addShadow(_arg1, _arg2=0){
myShadow = getShadowClip();
_arg1.addChild(myShadow);
shadowColor = _arg2;
}
public function get iX(){
return (anchorPoint.ix);
}
public function customLocate(_arg1){
anchorPoint.customLocate(_arg1);
}
public function setY(_arg1){
anchorPoint.y = _arg1;
}
public function setCoords(_arg1, _arg2, _arg3, _arg4=false){
anchorPoint.x = _arg1;
anchorPoint.y = _arg2;
anchorPoint.z = _arg3;
if (_arg4){
anchorPoint.ix = _arg1;
anchorPoint.iy = _arg2;
anchorPoint.iz = _arg3;
};
}
public function addForm(_arg1){
shapeShell.addChild(_arg1);
}
function getColorTransform(){
return (new Transform(this));
}
public function setColor(_arg1, _arg2=null){
if (_arg2 == null){
_arg2 = shapeShell;
};
ColorTools.setRGB(_arg2, _arg1);
}
public function setX(_arg1){
anchorPoint.x = _arg1;
}
public function setZ(_arg1){
anchorPoint.z = _arg1;
}
public function get X(){
return (anchorPoint.x);
}
public function get Z(){
return (anchorPoint.z);
}
public function locate(){
anchorPoint.locate();
}
public function setMask(_arg1, _arg2="default"){
if (maskKey == null){
maskKey = {};
};
maskKey[_arg2] = _arg1;
}
public function get Y(){
return (anchorPoint.y);
}
public function get focalDepth(){
return (anchorPoint.focalDepth);
}
public function setTint(_arg1, _arg2, _arg3=null){
if (_arg3 == null){
_arg3 = this;
};
ColorTools.setTint(_arg3, _arg1, _arg2);
}
public function sizeAndPlace(_arg1=1){
var _local2:*;
shapeShell.x = anchorPoint.vx;
shapeShell.y = anchorPoint.vy;
_local2 = (anchorPoint.depth * _arg1);
shapeShell.scaleX = _local2;
shapeShell.scaleY = _local2;
}
public function rotateContents(_arg1){
shapeShell.rotation = ((_arg1 / Math.PI) * 180);
}
public function lineTo(_arg1, _arg2){
_arg1.lineTo(_arg2.vx, _arg2.vy);
}
public function getShadowClip(){
return (new Sprite());
}
public function get depthPoint(){
return (depthRef);
}
public function set X(_arg1){
anchorPoint.x = _arg1;
}
public function setCoord(_arg1, _arg2){
anchorPoint.setCoord(_arg1, _arg2);
}
public function setAnchor(_arg1){
anchorPoint = _arg1;
depthPoint = _arg1;
}
public function set Z(_arg1){
anchorPoint.z = _arg1;
}
public function set Y(_arg1){
anchorPoint.y = _arg1;
}
public function getX(){
return (anchorPoint.x);
}
public function get vx(){
return (anchorPoint.vx);
}
public function getY(){
return (anchorPoint.y);
}
public function get rootPoint(){
return (anchorPoint.rootPoint);
}
public function curveTo(_arg1, _arg2, _arg3){
_arg1.curveTo(_arg2.vx, _arg2.vy, _arg3.vx, _arg3.vy);
}
public function get vy(){
return (anchorPoint.vy);
}
public function removeShadow(){
myShadow.parent.removeChild(myShadow);
}
public function createForm(_arg1:Class){
innerForm = new (_arg1);
addForm(innerForm);
}
public function getZ(){
return (anchorPoint.z);
}
}
}//package ThreeDee
Section 31
//ThreeDeePartContainer (ThreeDee.ThreeDeePartContainer)
package ThreeDee {
import flash.display.*;
public class ThreeDeePartContainer extends Sprite {
var depthRef;
var bgClips;
var parts;
var fgClips;
var bgCounter;// = 0
public function ThreeDeePartContainer(){
bgCounter = 0;
super();
parts = [];
fgClips = [];
bgClips = [];
}
public function setDepths(){
var _local1:*;
var _local2:*;
var _local3:*;
var _local4:*;
var _local5:*;
for each (_local1 in parts) {
_local1.depth = _local1.depthRef.depth;
};
parts.sortOn("depth", Array.NUMERIC);
_local2 = parts.length;
_local3 = 0;
while (_local3 < _local2) {
setChildIndex(parts[_local3].mc, (bgCounter + _local3));
_local3++;
};
_local4 = fgClips.length;
_local5 = 0;
while (_local5 < _local4) {
setChildIndex(fgClips[_local5], ((bgCounter + _local2) + _local5));
_local5++;
};
}
public function setFocalDepths(){
var _local1:*;
var _local2:*;
var _local3:*;
var _local4:*;
var _local5:*;
for each (_local1 in parts) {
_local1.focalDepth = _local1.depthRef.focalDepth;
_local1.depth = _local1.depthRef.depth;
};
parts.sortOn(["depth", "focalDepth"], Array.NUMERIC);
_local2 = parts.length;
_local3 = 0;
while (_local3 < _local2) {
setChildIndex(parts[_local3].mc, (bgCounter + _local3));
_local3++;
};
_local4 = fgClips.length;
_local5 = 0;
while (_local5 < _local4) {
setChildIndex(fgClips[_local5], ((bgCounter + _local2) + _local5));
_local5++;
};
}
public function addPart(_arg1, _arg2=null){
if (_arg2 == null){
_arg2 = _arg1;
};
parts.push({mc:_arg1, depthRef:_arg2});
super.addChild(_arg1);
}
public function addBgClip(_arg1){
bgClips.push(_arg1);
addChildAt(_arg1, bgCounter);
bgCounter++;
}
public function setDepthRef(_arg1){
depthRef = _arg1;
}
public function removePart(_arg1:Sprite){
var _local2:*;
_local2 = 0;
while (_local2 < parts.length) {
if (parts[_local2].mc == _arg1){
removeChild(_arg1);
parts.splice(_local2, 1);
return;
};
_local2++;
};
_local2 = 0;
while (_local2 < bgClips.length) {
if (bgClips[_local2] == _arg1){
removeChild(_arg1);
bgClips.splice(_local2, 1);
bgCounter--;
return;
};
_local2++;
};
_local2 = 0;
while (_local2 < fgClips.length) {
if (fgClips[_local2] == _arg1){
removeChild(_arg1);
fgClips.splice(_local2, 1);
return;
};
_local2++;
};
}
public function addFgClip(_arg1){
fgClips.push(_arg1);
addChild(_arg1);
}
public function get depth(){
return (depthRef.depth);
}
}
}//package ThreeDee
Section 32
//ThreeDeePoint (ThreeDee.ThreeDeePoint)
package ThreeDee {
public dynamic class ThreeDeePoint extends ThreeDeeObject {
var ty;
public var px;// = 0
public var py;// = 0
public var pz;// = 0
var tx;
var parentPoint;
public var projectionMethod;
var tz;
var camera;
public var ix;
public var iz;
public var pvx;
public var pvy;
public var iy;
public var vx;
public var depth;
public var vy;
public var rootPoint;
var sn;
var anchorPoint;
var cs;
public var _p:Object;
public var x;// = 0
public var y;// = 0
public var z;// = 0
public function ThreeDeePoint(_arg1, _arg2=0, _arg3=0, _arg4=0){
x = 0;
y = 0;
z = 0;
px = 0;
py = 0;
pz = 0;
sn = Math.sin;
cs = Math.cos;
super();
projectionMethod = simpleProjection;
camera = ThreeDeeCamera;
anchorPoint = camera.anchorPoint;
if (_arg1 != null){
setAnchor(_arg1);
};
if (_arg2 != undefined){
ix = (x = _arg2);
};
if (_arg3 != undefined){
iy = (y = _arg3);
};
if (_arg4 != undefined){
iz = (z = _arg4);
};
}
public function setLocalCoordsFromGlobal(_arg1, _arg2, _arg3){
x = (_arg1 - _p.px);
y = (_arg2 - _p.py);
z = (_arg3 - _p.pz);
}
public function XYZ(_arg1=0, _arg2=0, _arg3=0){
x = _arg1;
y = _arg2;
z = _arg3;
}
public function beginCustomTransform(){
tx = x;
ty = y;
tz = z;
}
public function customLocate(_arg1:ThreeDeeTransform){
var _local2:*;
var _local3:*;
var _local4:*;
var _local5:*;
var _local6:*;
var _local7:*;
var _local8:*;
var _local9:*;
_local2 = _arg1.axes;
_local3 = _arg1.values;
_local4 = _arg1.trigs;
beginCustomTransform();
_local5 = _local2.length;
_local6 = 0;
while (_local6 < _local5) {
_local7 = _local2[_local6];
_local8 = _local3[_local6];
_local9 = _local4[_local6];
if (_local7 == "x"){
transformYaw(_local8, _local9[0], _local9[1]);
} else {
if (_local7 == "y"){
transformTilt(_local8, _local9[0], _local9[1]);
} else {
if (_local7 == "z"){
transformRote(_local8, _local9[0], _local9[1]);
};
};
};
_local6++;
};
fixCustomTransform();
}
public function fixCustomTransform(){
px = (tx + _p.px);
py = (ty + _p.py);
pz = (tz + _p.pz);
projectionMethod();
}
public function zero(){
XYZ(0, 0, 0);
}
public function setCoords(_arg1=0, _arg2=0, _arg3=0, _arg4=false){
x = _arg1;
y = _arg2;
z = _arg3;
if (_arg4){
ix = x;
iy = y;
iz = z;
};
}
public function simpleProjection(){
var _local1:*;
_local1 = (camera.perspex / py);
depth = _local1;
vx = (px * _local1);
vy = (-(pz) * _local1);
}
public function setAnchor(_arg1){
if (_arg1 == false){
_p = this;
rootPoint = this;
} else {
_p = _arg1;
rootPoint = _p.rootPoint;
};
}
public function transformTilt(_arg1, _arg2, _arg3){
var _local4:*;
var _local5:*;
_local4 = tx;
_local5 = tz;
tx = ((_local4 * _arg3) - (_local5 * _arg2));
tz = ((_local5 * _arg3) + (_local4 * _arg2));
}
public function setCoord(_arg1, _arg2){
this[_arg1] = _arg2;
}
public function yzProjection(){
var _local1:*;
_local1 = (camera.perspex / Math.sqrt(((pz * pz) + (py * py))));
depth = _local1;
vx = (px * _local1);
vy = (-(pz) * _local1);
}
public function locate(){
px = (x + _p.px);
py = (y + _p.py);
pz = (z + _p.pz);
projectionMethod();
}
public function get vys(){
return ((-(rootPoint.pz) * depth));
}
public function transformRote(_arg1, _arg2, _arg3){
var _local4:*;
var _local5:*;
_local4 = tx;
_local5 = ty;
tx = ((_local4 * _arg3) - (_local5 * _arg2));
ty = ((_local5 * _arg3) + (_local4 * _arg2));
}
public function get focalDepth(){
return (-((Math.abs(px) + Math.abs(pz))));
}
public function get sq(){
return ((-(rootPoint.pz) / py));
}
function fullMatch(_arg1){
px = _arg1.px;
py = _arg1.py;
pz = _arg1.pz;
pvx = _arg1.pvx;
pvy = _arg1.pvy;
depth = _arg1.depth;
vx = _arg1.vx;
vy = _arg1.vy;
}
public function transformYaw(_arg1, _arg2, _arg3){
var _local4:*;
var _local5:*;
_local4 = ty;
_local5 = tz;
ty = ((_local4 * _arg3) - (_local5 * _arg2));
tz = ((_local5 * _arg3) + (_local4 * _arg2));
}
public function iXYZ(_arg1, _arg2, _arg3){
ix = (x = _arg1);
iy = (y = _arg2);
iz = (z = _arg3);
}
}
}//package ThreeDee
Section 33
//ThreeDeeTransform (ThreeDee.ThreeDeeTransform)
package ThreeDee {
public class ThreeDeeTransform extends Array {
private var cos;
public var trigs;
private var sin;
public var axes;
public var values;
public function ThreeDeeTransform(... _args){
var _local2:*;
var _local3:*;
var _local4:*;
var _local5:*;
var _local6:*;
sin = Math.sin;
cos = Math.cos;
super();
axes = [];
values = [];
trigs = [];
_local2 = _args.length;
_local3 = 0;
while (_local3 < _local2) {
_local4 = _args[_local3];
for (_local5 in _local4) {
axes.push(_local5);
_local6 = _local4[_local5];
values.push(_local6);
trigs.push([sin(_local6), cos(_local6)]);
};
_local3++;
};
}
public function getSteps(){
var _local1:*;
var _local2:*;
var _local3:*;
_local1 = [];
_local2 = axes.length;
_local3 = 0;
while (_local3 < _local2) {
_local1.push(getStep(_local3));
_local3++;
};
return (_local1);
}
public function getStep(_arg1){
var _local2:*;
_local2 = {};
_local2[axes[_arg1]] = values[_arg1];
return (_local2);
}
public function clone(){
var _local1:*;
var _local2:*;
var _local3:*;
var _local4:*;
_local1 = new ThreeDeeTransform();
_local2 = axes.length;
_local3 = 0;
while (_local3 < _local2) {
_local4 = {};
_local4[axes[_local3]] = values[_local3];
_local1.insertTransform(_local3, _local4);
_local3++;
};
return (_local1);
}
public function pushTransform(_arg1){
insertTransform(axes.length, _arg1);
}
public function insertTransform(_arg1, _arg2, _arg3=false){
var _local4:*;
var _local5:*;
var _local6:*;
_local4 = (_arg3) ? 1 : 0;
for (_local5 in _arg2) {
axes.splice(_arg1, _local4, _local5);
_local6 = _arg2[_local5];
values.splice(_arg1, _local4, _local6);
trigs.splice(_arg1, _local4, [sin(_local6), cos(_local6)]);
};
}
public function traceContents(){
var _local1:*;
var _local2:*;
var _local3:*;
_local1 = "";
_local2 = axes.length;
_local3 = 0;
while (_local3 < _local2) {
_local1 = (_local1 + (((axes[_local3] + ": ") + values[_local3]) + "\n"));
_local3++;
};
trace(_local1);
}
}
}//package ThreeDee
Section 34
//ColorTools (util.ColorTools)
package util {
import fl.motion.*;
import flash.geom.*;
public class ColorTools {
public static function blendColors(_arg1, _arg2, _arg3){
return (Color.interpolateColor(_arg1, _arg2, (1 - _arg3)));
}
public static function getTintObj(_arg1, _arg2){
var _local3:*;
var _local4:*;
var _local5:*;
_local3 = (_arg1 >> 16);
_local4 = ((_arg1 >> 8) & 0xFF);
_local5 = (_arg1 & 0xFF);
return (new ColorTransform((1 - _arg2), (1 - _arg2), (1 - _arg2), 1, (_local3 * _arg2), (_local4 * _arg2), (_local5 * _arg2), 0));
}
public static function clearTint(_arg1){
setTint(_arg1, 0, 0);
}
public static function setRGB(_arg1, _arg2){
var _local3:*;
var _local4:*;
var _local5:*;
var _local6:*;
_local3 = _arg1.transform;
_local4 = (_arg2 >> 16);
_local5 = ((_arg2 >> 8) & 0xFF);
_local6 = (_arg2 & 0xFF);
_local3.colorTransform = new ColorTransform(0, 0, 0, 1, _local4, _local5, _local6, 0);
}
public static function setTint(_arg1, _arg2, _arg3){
applyTransform(_arg1, getTintObj(_arg2, _arg3));
}
public static function applyTransform(_arg1, _arg2){
_arg1.transform.colorTransform = _arg2;
}
}
}//package util
Section 35
//Curves (util.Curves)
package util {
public class Curves {
public static function easeOut(_arg1){
return (Math.sin(((_arg1 * Math.PI) / 2)));
}
public static function easeIn(_arg1){
return ((1 - Math.sin((((1 - _arg1) * Math.PI) / 2))));
}
public static function zenoEaseOut(_arg1){
return (((_arg1 == 1)) ? 1 : (-(Math.pow(2, (-10 * _arg1))) + 1));
}
public static function quadEaseOut(_arg1){
_arg1 = (_arg1 / 1);
return ((-(_arg1) * (_arg1 - 2)));
}
public static function quadEaseIn(_arg1){
_arg1 = (_arg1 / 1);
return ((_arg1 * _arg1));
}
public static function scurve(_arg1){
return (((-(Math.cos((_arg1 * Math.PI))) + 1) / 2));
}
public static function zenoEaseIn(_arg1){
return (((_arg1 == 0)) ? 0 : Math.pow(2, (10 * (_arg1 - 1))));
}
}
}//package util
Section 36
//DelayedEvent (util.DelayedEvent)
package util {
import flash.display.*;
import flash.events.*;
public class DelayedEvent extends Sprite {
var myEvent;
var onFrame;
static var eventArr = [];
public function DelayedEvent(_arg1:Function, _arg2:Number, ... _args){
var maxTime:*;
var currTime:*;
var func = _arg1;
var endParam = _arg2;
var restParams = _args;
super();
eventArr.push(this);
maxTime = endParam;
currTime = 0;
onFrame = function (){
var _local1:*;
currTime++;
if (currTime >= maxTime){
_local1 = ((restParams == null)) ? 0 : restParams.length;
func.apply(this, restParams);
cancel();
};
};
this.addEventListener(Event.ENTER_FRAME, onFrame);
}
public function cancel(){
this.removeEventListener(Event.ENTER_FRAME, onFrame);
eventArr.splice(eventArr.indexOf(this), 1);
}
public static function clearAllEvents(){
var _local1:*;
var _local2:*;
_local1 = eventArr.length;
_local2 = (_local1 - 1);
while (_local2 >= 0) {
eventArr[_local2].cancel();
_local2--;
};
}
}
}//package util
Section 37
//Maths (util.Maths)
package util {
public class Maths {
public static var sqrt = Math.sqrt;
static var acos = Math.acos;
static var cos = Math.cos;
static var abs = Math.abs;
static var sin = Math.sin;
static var atan2 = Math.atan2;
public static function findTangent(_arg1, _arg2, _arg3, _arg4){
var _local5:*;
var _local6:*;
var _local7:*;
var _local8:*;
var _local9:*;
var _local10:*;
var _local11:*;
var _local12:*;
var _local13:*;
var _local14:*;
var _local15:*;
var _local16:*;
var _local17:*;
var _local18:*;
var _local19:*;
if (Math.abs(_arg2) < 0.0001){
_arg2 = 0.0001;
};
_local5 = ((_arg1 * _arg1) + (_arg2 * _arg2));
_local6 = (_arg3 * _arg3);
if (_local6 > _local5){
_local19 = (_local6 / _local5);
_arg1 = (_arg1 * _local19);
_arg2 = (_arg2 * _local19);
_local5 = ((_arg1 * _arg1) + (_arg2 * _arg2));
};
_local7 = sqrt((_local5 - _local6));
_local8 = ((_arg4)==1) ? acos((((_arg3 * _arg1) + (_arg2 * _local7)) / _local5)) : acos((((_arg3 * _arg1) - (_arg2 * _local7)) / _local5));
_local9 = (_arg3 * cos(_local8));
_local10 = (_arg3 * sin(_local8));
_local11 = pyt((_local10 - _arg2), (_local9 - _arg1));
_local12 = (_arg3 * cos(-(_local8)));
_local13 = (_arg3 * sin(-(_local8)));
_local14 = pyt((_local13 - _arg2), (_local12 - _arg1));
_local15 = (-((_local9 / _local10)) / ((_local10 - _arg2) / (_local9 - _arg1)));
_local16 = ((abs((_local15 - 1)))<1E-7) ? 1 : 2;
_local17 = ((_local16 == 1)) ? _local9 : _local12;
_local18 = ((_local16 == 1)) ? _local10 : _local13;
return ({x:_local17, y:_local18});
}
public static function pyt(_arg1, _arg2){
return (sqrt(((_arg1 * _arg1) + (_arg2 * _arg2))));
}
public static function getIntersection(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6){
var _local7:*;
var _local8:*;
var _local9:*;
var _local10:*;
var _local11:*;
var _local12:*;
_local7 = Math.tan(_arg5);
_local8 = (_arg2 - (_local7 * _arg1));
_local9 = Math.tan(_arg6);
_local10 = (_arg4 - (_local9 * _arg3));
_local11 = (((_local8 - _local10) / _local9) / (1 - (_local7 / _local9)));
_local12 = ((_local7 * _local11) + _local8);
return ({x:_local11, y:_local12});
}
}
}//package util
Section 38
//RepeatedEvent (util.RepeatedEvent)
package util {
import flash.display.*;
import flash.events.*;
public class RepeatedEvent extends Sprite {
var onFrame;
static var eventArr = [];
public function RepeatedEvent(_arg1, _arg2, ... _args){
var currTime:*;
var func = _arg1;
var maxTime = _arg2;
var restParams = _args;
super();
restParams.splice(0, 0, 0);
currTime = 0;
onFrame = function (){
currTime++;
if (restParams.length > 0){
restParams[0] = (currTime / maxTime);
func.apply(this, restParams);
} else {
func((currTime / maxTime));
};
if (currTime >= maxTime){
cancel();
};
};
addEventListener(Event.ENTER_FRAME, onFrame);
if (restParams.length > 0){
func.apply(this, restParams);
} else {
func(0);
};
eventArr.push(this);
}
public function fire(){
onFrame();
}
public function cancel(){
removeEventListener(Event.ENTER_FRAME, onFrame);
eventArr.splice(eventArr.indexOf(this), 1);
}
public static function clearAllEvents(){
var _local1:*;
for each (_local1 in eventArr) {
_local1.cancel();
};
}
}
}//package util
Section 39
//ShortCuts (util.ShortCuts)
package util {
import flash.system.*;
import flash.net.*;
public class ShortCuts {
public static function getAngleDiff(_arg1, _arg2){
while ((_arg1 - _arg2) > Math.PI) {
_arg1 = (_arg1 - (Math.PI * 2));
};
while ((_arg2 - _arg1) > Math.PI) {
_arg1 = (_arg1 + (Math.PI * 2));
};
return ((_arg1 - _arg2));
}
public static function gotoUrl(_arg1){
return (navigateToURL(new URLRequest(_arg1)));
}
public static function getFlashVersion(){
return (Capabilities.version.split(" ")[1].split(",")[0]);
}
}
}//package util
Section 40
//Vector (util.Vector)
package util {
public class Vector {
public var x;
public var y;
public function Vector(_arg1=0, _arg2=0){
x = _arg1;
y = _arg2;
}
public function setMag(_arg1){
var _local2:*;
_local2 = Math.atan2(y, x);
x = (_arg1 * Math.cos(_local2));
y = (_arg1 * Math.sin(_local2));
}
public function getMag(){
return (Math.sqrt(((x * x) + (y * y))));
}
public function scale(_arg1){
x = (x * _arg1);
y = (y * _arg1);
return (new Vector(x, y));
}
public function setAngle(_arg1){
var _local2:*;
_local2 = getMag();
x = (_local2 * Math.cos(_arg1));
y = (_local2 * Math.sin(_arg1));
}
public function copy(){
return (new Vector(x, y));
}
public function minus(_arg1){
x = (x - _arg1.x);
y = (y - _arg1.y);
return (new Vector(x, y));
}
public function plus(_arg1){
x = (x + _arg1.x);
y = (y + _arg1.y);
return (new Vector(x, y));
}
public function rotate(_arg1){
var _local2:*;
var _local3:*;
_local2 = x;
_local3 = y;
x = ((_local2 * Math.cos(_arg1)) + (_local3 * Math.sin(_arg1)));
y = ((_local3 * Math.cos(_arg1)) - (_local2 * Math.sin(_arg1)));
return (new Vector(x, y));
}
public function getAngle(){
return (Math.atan2(y, x));
}
}
}//package util
Section 41
//circle (circle)
package {
import flash.display.*;
public dynamic class circle extends MovieClip {
}
}//package
Section 42
//circleShape (circleShape)
package {
import flash.display.*;
public dynamic class circleShape extends MovieClip {
public var shape:circle;
}
}//package
Section 43
//discShape (discShape)
package {
import flash.display.*;
public dynamic class discShape extends MovieClip {
public var subShape:MovieClip;
}
}//package
Section 44
//frameCorner (frameCorner)
package {
import flash.display.*;
public dynamic class frameCorner extends MovieClip {
}
}//package
Section 45
//semiCircleShape (semiCircleShape)
package {
import flash.display.*;
public dynamic class semiCircleShape extends MovieClip {
}
}//package
Section 46
//vpLogo (vpLogo)
package {
import flash.display.*;
public dynamic class vpLogo extends MovieClip {
}
}//package