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

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

Building Blaster - blast your way to victory in this explosive new game.swf

This is the info page for
Flash #92960

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


Text
0

1

2

3

4

L

A

O

G

ActionScript [AS3]

Section 1
//ControllerEvent (bblaster.core.events.ControllerEvent) package bblaster.core.events { import flash.events.*; public class ControllerEvent extends Event { private var _data:Object; public static const READY:String = "ControllerEvent.ready"; public static const MESSAGE:String = "ControllerEvent.message"; public static const COMPLETE:String = "ControllerEvent.complete"; public function ControllerEvent(_arg1:String, _arg2:Object=null){ super(_arg1); _data = _arg2; } public function get data():Object{ return (_data); } override public function clone():Event{ return (new ControllerEvent(type, _data)); } } }//package bblaster.core.events
Section 2
//BombEvent (bblaster.core.game.events.BombEvent) package bblaster.core.game.events { import flash.events.*; public class BombEvent extends Event { public static const DETONATE:String = "DETONATE"; public static const DELETE:String = "DELETE"; public function BombEvent(_arg1:String){ super(_arg1); } } }//package bblaster.core.game.events
Section 3
//GameModelEvent (bblaster.core.game.events.GameModelEvent) package bblaster.core.game.events { import flash.events.*; public class GameModelEvent extends Event { private var _data:Object; public static const EXPLODE_BOMB:String = "EXPLODE_BOMB"; public static const UPDATE_WORLD:String = "UPDATE_WORLD"; public static const COMPLETE_DETONATION:String = "COMPLETE_DETONATION"; public static const UPDATE_SCORE:String = "UPDATE_SCORE"; public static const UPDATE_BOMB_TIMER:String = "UPDATE_BOMB_TIMER"; public function GameModelEvent(_arg1:String, _arg2:Object=null){ super(_arg1); _data = _arg2; } public function get data():Object{ return (_data); } override public function clone():Event{ return (new GameModelEvent(type, _data)); } } }//package bblaster.core.game.events
Section 4
//HUDEvent (bblaster.core.game.events.HUDEvent) package bblaster.core.game.events { import flash.events.*; public class HUDEvent extends Event { private var _data:Object; public static const DETONATE:String = "DETONATE"; public static const RESET_LEVEL:String = "RESET_LEVEL"; public static const ADD_BOMB:String = "ADD_BOMB"; public static const MENU:String = "MENU"; public function HUDEvent(_arg1:String, _arg2:Object=null){ super(_arg1); _data = _arg2; } public function get data():Object{ return (_data); } override public function clone():Event{ return (new HUDEvent(type, _data)); } } }//package bblaster.core.game.events
Section 5
//AnimatedEffect (bblaster.core.game.AnimatedEffect) package bblaster.core.game { import flash.display.*; import flash.events.*; public class AnimatedEffect extends GameItem { private var clip:MovieClip; public function AnimatedEffect(_arg1:MovieClip){ this.clip = _arg1; _arg1.stop(); _arg1.mouseEnabled = false; _arg1.mouseChildren = false; super(_arg1); } override public function update():void{ if (clip.currentFrame == clip.totalFrames){ dispatchEvent(new Event(Event.COMPLETE)); } else { clip.nextFrame(); }; } override public function dispose():void{ super.dispose(); clip = null; } } }//package bblaster.core.game
Section 6
//Block (bblaster.core.game.Block) package bblaster.core.game { import flash.display.*; import Box2D.Common.Math.*; import Box2D.Dynamics.*; import com.bigwigmedia.utils.*; public class Block extends GameItem { private var _body:b2Body; public static const MIN_MOVE_TOLERANCE:Number = 0.5; public static const texture_1:BitmapData = new Texture_1(0, 0); public static const texture_2:BitmapData = new Texture_2(0, 0); public function Block(_arg1:Array, _arg2:Boolean, _arg3:b2Body){ var _local8:b2Vec2; super(new Sprite()); _sprite.mouseChildren = false; _sprite.mouseEnabled = false; _body = _arg3; var _local4:Graphics = _sprite.graphics; _local4.lineStyle(2, (_arg2) ? 14492194 : 10974467); _local4.beginBitmapFill((_arg2) ? texture_2 : texture_1); var _local5:b2Vec2 = _arg1[0]; _local4.moveTo((_local5.x * GameModel.WORLD_SCALE), (_local5.y * GameModel.WORLD_SCALE)); var _local6:int = _arg1.length; var _local7 = 1; while (_local7 < _local6) { _local8 = _arg1[_local7]; _local4.lineTo((_local8.x * GameModel.WORLD_SCALE), (_local8.y * GameModel.WORLD_SCALE)); _local7++; }; _local4.endFill(); } override public function update():void{ var _local1:b2Vec2 = _body.GetPosition(); var _local2:Number = (_local1.x * GameModel.WORLD_SCALE); var _local3:Number = (_local1.y * GameModel.WORLD_SCALE); if (((MathUtil.nearEquals(_local2, _sprite.x, MIN_MOVE_TOLERANCE)) && (MathUtil.nearEquals(_local3, _sprite.y, MIN_MOVE_TOLERANCE)))){ return; }; _sprite.x = _local2; _sprite.y = _local3; _sprite.rotation = ((_body.GetAngle() * 180) / Math.PI); } public function get body():b2Body{ return (_body); } override public function dispose():void{ _body = null; super.dispose(); } } }//package bblaster.core.game
Section 7
//BlockParams (bblaster.core.game.BlockParams) package bblaster.core.game { public class BlockParams { private var _y:Number; private var _avoid:Boolean; private var _vertices:Array; private var _x:Number; private var _rotation:Number; public function BlockParams(_arg1:Array, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Boolean){ _vertices = _arg1; _x = _arg2; _y = _arg3; _rotation = _arg4; _avoid = _arg5; } public function get vertices():Array{ return (_vertices); } public function get y():Number{ return (_y); } public function get avoid():Boolean{ return (_avoid); } public function get rotation():Number{ return (_rotation); } public function get x():Number{ return (_x); } } }//package bblaster.core.game
Section 8
//Bomb (bblaster.core.game.Bomb) package bblaster.core.game { import flash.display.*; import flash.events.*; import com.bigwigmedia.ui.*; import bblaster.core.game.events.*; import flash.geom.*; import com.bigwigmedia.application.*; public class Bomb extends GameItem { private var _delay:int;// = 2 private var spriteBack:Sprite; private var decreaseTimeBtn:IconicButton; private var _strength:int; private var increaseTimeBtn:IconicButton; private var deleteBtn:IconicButton; private var timerClip:MovieClip; private var _id:int; private static var idCount:int = 0; public function Bomb(_arg1:int){ _id = idCount++; _strength = _arg1; super(new Sprite()); spriteBack = new Sprite(); spriteBack.graphics.lineStyle(); spriteBack.graphics.beginFill(0xFF0000, 0); spriteBack.graphics.drawRect(-32, -26, 64, 52); spriteBack.graphics.endFill(); _sprite.addChild(spriteBack); increaseTimeBtn = new IconicButton(IncreaseTimeButtonIcon); increaseTimeBtn.move(16, 10); _sprite.addChild(increaseTimeBtn); decreaseTimeBtn = new IconicButton(DecreaseTimeButtonIcon); decreaseTimeBtn.move(-32, 10); _sprite.addChild(decreaseTimeBtn); deleteBtn = new IconicButton(DeleteButtonIcon); deleteBtn.move(16, -26); _sprite.addChild(deleteBtn); var _local2:MovieClip = new BombClip(); _local2.gotoAndStop(_strength); _sprite.addChild(_local2); timerClip = (_sprite.addChild(new TimerClip()) as MovieClip); timerClip.gotoAndStop(1); showTimer(); _sprite.addEventListener(MouseEvent.MOUSE_DOWN, onMouseDownHandler); _sprite.addEventListener(MouseEvent.MOUSE_OVER, onMouseOverHandler); _sprite.addEventListener(MouseEvent.MOUSE_OUT, onMouseOutHandler); } public function get strength():int{ return (_strength); } private function onMouseOutHandler(_arg1:MouseEvent):void{ spriteBack.visible = (increaseTimeBtn.visible = (decreaseTimeBtn.visible = (deleteBtn.visible = false))); } public function get delay():int{ return (_delay); } private function onStageMouseUpHandler(_arg1:MouseEvent):void{ _sprite.stage.removeEventListener(MouseEvent.MOUSE_UP, onStageMouseUpHandler); _sprite.stopDrag(); if (_sprite.y > 400){ dispatchEvent(new BombEvent(BombEvent.DELETE)); }; } public function showDelayLabel(_arg1:int):void{ var _local2:int = (_arg1 + 1); if (_local2 != timerClip.currentFrame){ timerClip.gotoAndStop(_local2); }; } private function showTimer():void{ var _local1:int = (_delay + 1); if (_local1 != timerClip.currentFrame){ timerClip.gotoAndStop(_local1); }; } public function set uiEnabled(_arg1:Boolean):void{ _sprite.mouseChildren = (_sprite.mouseEnabled = _arg1); } private function onMouseDownHandler(_arg1:MouseEvent):void{ switch (_arg1.target){ case increaseTimeBtn: if (_delay < 4){ _delay++; showTimer(); }; break; case decreaseTimeBtn: if (_delay > 1){ _delay--; showTimer(); }; break; case deleteBtn: dispatchEvent(new BombEvent(BombEvent.DELETE)); break; default: startDrag(); break; }; } override public function dispose():void{ ApplicationGlobals.application.stage.removeEventListener(MouseEvent.MOUSE_UP, onStageMouseUpHandler); _sprite.removeEventListener(MouseEvent.MOUSE_DOWN, onMouseDownHandler); _sprite.removeEventListener(MouseEvent.MOUSE_OVER, onMouseOverHandler); _sprite.removeEventListener(MouseEvent.MOUSE_OUT, onMouseOutHandler); increaseTimeBtn.dispose(); increaseTimeBtn = null; decreaseTimeBtn.dispose(); decreaseTimeBtn = null; deleteBtn.dispose(); deleteBtn = null; super.dispose(); } private function onMouseOverHandler(_arg1:MouseEvent):void{ spriteBack.visible = (increaseTimeBtn.visible = (decreaseTimeBtn.visible = (deleteBtn.visible = true))); _sprite.parent.setChildIndex(_sprite, (_sprite.parent.numChildren - 1)); } public function startDrag():void{ _sprite.stage.addEventListener(MouseEvent.MOUSE_UP, onStageMouseUpHandler); _sprite.startDrag(false, new Rectangle(20, 20, 600, 440)); } public function get id():int{ return (_id); } } }//package bblaster.core.game
Section 9
//BombButton (bblaster.core.game.BombButton) package bblaster.core.game { import com.bigwigmedia.ui.*; public class BombButton extends IconicButton { private var _strength:int; public function BombButton(_arg1:int){ _strength = _arg1; super(((_arg1 == 1)) ? BombButtonIcon_1 : ((_arg1 == 2)) ? BombButtonIcon_2 : BombButtonIcon_3); } public function get strength():int{ return (_strength); } } }//package bblaster.core.game
Section 10
//BombModel (bblaster.core.game.BombModel) package bblaster.core.game { import com.bigwigmedia.core.*; public class BombModel implements IUpdatable { private var _strength:int; private var _delay:int; private var _delayFrameCount:int; private var _x:Number; private var _y:Number; private var _bombID:int; public static const FRAMES_PER_DELAY_UNIT:int = 10; public function BombModel(_arg1:int, _arg2:Number, _arg3:Number, _arg4:int, _arg5:int){ _bombID = _arg1; _x = _arg2; _y = _arg3; _strength = _arg4; _delay = _arg5; _delayFrameCount = _slot1.FRAMES_PER_DELAY_UNIT; } public function get strength():int{ return (_strength); } public function get delay():int{ return (_delay); } public function update():void{ if ((((_delay > 0)) && ((_delayFrameCount-- <= 0)))){ _delayFrameCount = _slot1.FRAMES_PER_DELAY_UNIT; _delay--; }; } public function get y():Number{ return (_y); } public function get bombID():int{ return (_bombID); } public function get x():Number{ return (_x); } } }//package bblaster.core.game
Section 11
//CustomContactListener (bblaster.core.game.CustomContactListener) package bblaster.core.game { import Box2D.Collision.*; import Box2D.Dynamics.*; public class CustomContactListener extends b2ContactListener { private var addContactCallback:Function; public function CustomContactListener(_arg1:Function){ this.addContactCallback = _arg1; } override public function Add(_arg1:b2ContactPoint):void{ addContactCallback(_arg1); } public function dispose():void{ addContactCallback = null; } } }//package bblaster.core.game
Section 12
//GameController (bblaster.core.game.GameController) package bblaster.core.game { import com.bigwigmedia.stateMachine.*; import bblaster.core.events.*; import flash.display.*; import flash.events.*; import bblaster.managers.*; import bblaster.core.game.events.*; import bblaster.core.main.*; import bblaster.core.*; import bblaster.sound.*; import com.bigwigmedia.application.*; public class GameController extends EventDispatcher implements IController { private var hsm:HSM; private var _view:GameView; private var _gamePaused:Boolean;// = false private var _model:GameModel; private var subController:IController; public static const SIGNAL_DETONATE:String = "DETONATE"; public static const SIGNAL_RESET:String = "RESET"; public static const SIGNAL_COMPLETE_DETONATION:String = "COMPLETE_DETONATION"; public static const RED_BUILDINGS_HINT_LEVEL:int = 4; private function showResult(_arg1:AbstractEvent):void{ var _local2:int = _model.levelScore; var _local3:int = Managers.configManager.getLevelGoal(GameInfo.currentLevel); if (_local2 > GameInfo.getBestLevelScore(GameInfo.currentLevel)){ GameInfo.setBestLevelScore(GameInfo.currentLevel, _local2); }; if (GameInfo.getBestLevelScore(GameInfo.currentLevel) >= _local3){ if (((((GameInfo.currentLevel + 1) > GameInfo.levelReached)) && ((GameInfo.currentLevel < Managers.configManager.totalLevels)))){ GameInfo.levelReached = (GameInfo.currentLevel + 1); }; }; subController = new LevelCompleteController(_local2, _local3); subController.addEventListener(ControllerEvent.MESSAGE, onControllerMessageHandler); subController.addEventListener(ControllerEvent.READY, onControllerReadyHandler); subController.initialize(); } public function showMenu():void{ _gamePaused = true; subController = new PauseMenuController(); subController.addEventListener(ControllerEvent.MESSAGE, onControllerMessageHandler); subController.addEventListener(ControllerEvent.READY, onControllerReadyHandler); subController.initialize(); } public function unpause():void{ _gamePaused = false; } private function reset(_arg1:AbstractEvent):void{ _model.resetLevel(); _view.resetLevel(); _view.createLevel(_model.getBodyToParamsDict()); _view.hud.bombButtonsVisible = true; } public function initialize():void{ _model = new GameModel(); _model.addEventListener(GameModelEvent.UPDATE_WORLD, onModelEventHandler); _model.addEventListener(GameModelEvent.UPDATE_SCORE, onModelEventHandler); _model.addEventListener(GameModelEvent.COMPLETE_DETONATION, onModelEventHandler); _model.addEventListener(GameModelEvent.UPDATE_BOMB_TIMER, onModelEventHandler); _model.addEventListener(GameModelEvent.EXPLODE_BOMB, onModelEventHandler); _view = new GameView(this, _model.getBombStrengthList()); _view.createLevel(_model.getBodyToParamsDict()); ApplicationGlobals.application.stage.addEventListener(Event.ENTER_FRAME, onEnterFrameHandler); hsm = new HSM(); var _local1:AbstractState = hsm.addState(new InitialState()); var _local2:AbstractState = hsm.addState(new SimpleState(startWaiting)); var _local3:AbstractState = hsm.addState(new SimpleState(initDetonation)); var _local4:AbstractState = hsm.addState(new SimpleState(completeDetonation)); var _local5:AbstractState = hsm.addState(new SimpleState(showResult)); _local1.addTransition(_local2); _local2.addTransition(_local3, new SignalTrigger(SIGNAL_DETONATE)); _local3.addTransition(_local4, new SignalTrigger(SIGNAL_COMPLETE_DETONATION)); _local3.addTransition(_local2, new SignalTrigger(SIGNAL_RESET), reset); _local4.addTransition(_local5, new TimeTrigger(2000)); _local5.addTransition(_local2, new SignalTrigger(SIGNAL_RESET), reset); hsm.start(); if (GameInfo.currentLevel == 0){ _view.showInstructionsPopup(); } else { if ((((GameInfo.currentLevel == RED_BUILDINGS_HINT_LEVEL)) && (Managers.soManager.getValue("showHints")))){ Managers.soManager.setValue("showHints", false); _view.showHintPopup(); }; }; dispatchEvent(new ControllerEvent(ControllerEvent.READY)); } private function startWaiting(_arg1:AbstractEvent):void{ _view.hideScoreGauge(); _view.hud.enabled = true; pause(); } private function initDetonation(_arg1:AbstractEvent):void{ var _local5:Bomb; var _local6:BombModel; _view.hud.bombButtonsVisible = false; var _local2:int = Managers.configManager.getLevelGoal(GameInfo.currentLevel); _view.showScoreGauge(_local2); var _local3:Array = _view.getBombsList(); _view.bombsEnabled = false; var _local4:Array = []; for each (_local5 in _local3) { _local6 = new BombModel(_local5.id, _local5.sprite.x, _local5.sprite.y, _local5.strength, _local5.delay); _local4.push(_local6); }; _model.detonate(_local4); unpause(); } private function removeSubController():void{ if (subController){ subController.addEventListener(ControllerEvent.MESSAGE, onControllerMessageHandler); subController.addEventListener(ControllerEvent.READY, onControllerReadyHandler); _view.removeChild(subController.view); subController.dispose(); subController = null; }; } private function completeDetonation(_arg1:AbstractEvent):void{ var _local7:String; var _local8:uint; var _local9:Number; var _local10:int; var _local11:Number; var _local12:int; pause(); _view.hud.enabled = false; var _local2:int = _model.levelScore; var _local3:int = Managers.configManager.getLevelGoal(GameInfo.currentLevel); var _local4:int = Managers.configManager.getLevelMaxScore(GameInfo.currentLevel); var _local5:Array = Managers.configManager.getBadResultPopups(); var _local6:Array = Managers.configManager.getGoodResultPopups(); if (_local2 == 0){ _local8 = 0xFF0000; _local7 = _local5[0]; Managers.soundManager.playSound(SoundID.ABSOLUTE_ZERO); } else { if (_local2 == _local3){ _local8 = 0xFF00; _local7 = _local6[0]; Managers.soundManager.playSound(SoundID.MASTER_BLASTER_EFFECT); } else { if (_local2 > _local3){ _local8 = 0xFF00; _local9 = ((_local2 - _local3) / (_local4 - _local3)); _local10 = (((_local6.length - 1) * _local9) + 1); if (_local10 > (_local6.length - 1)){ _local10 = (_local6.length - 1); }; _local7 = _local6[_local10]; Managers.soundManager.playSound(SoundID.MASTER_BLASTER_EFFECT); } else { _local8 = 0xFFFF00; _local11 = (_local2 / _local3); _local12 = (((_local5.length - 1) * _local11) + 1); _local7 = _local5[_local12]; Managers.soundManager.playSound(SoundID.OTHER_RESULT); }; }; }; _view.showResultPopup(_local7, _local8); } public function detonate():void{ hsm.sendSignal(new SignalEvent(SIGNAL_DETONATE)); } private function onControllerReadyHandler(_arg1:ControllerEvent):void{ _view.addChild(subController.view); } public function get view():DisplayObject{ return (_view); } public function dispose():void{ ApplicationGlobals.application.stage.removeEventListener(Event.ENTER_FRAME, onEnterFrameHandler); removeSubController(); _view.dispose(); _view = null; _model.dispose(); _model = null; hsm.dispose(); hsm = null; } public function resetLevel():void{ hsm.sendSignal(new SignalEvent(SIGNAL_RESET)); } private function onEnterFrameHandler(_arg1:Event):void{ _view.updateEffects(); if (_gamePaused){ return; }; _model.update(); } private function onModelEventHandler(_arg1:GameModelEvent):void{ var _local2:BombModel; switch (_arg1.type){ case GameModelEvent.UPDATE_SCORE: _view.scoreGaugeCurrentValue = (_arg1.data as int); break; case GameModelEvent.UPDATE_BOMB_TIMER: _local2 = BombModel(_arg1.data); _view.updateBombTimer(_local2.bombID, _local2.delay); break; case GameModelEvent.EXPLODE_BOMB: _view.explodeBomb(BombModel(_arg1.data).bombID); break; case GameModelEvent.UPDATE_WORLD: _view.update(); break; case GameModelEvent.COMPLETE_DETONATION: hsm.sendSignal(new SignalEvent(SIGNAL_COMPLETE_DETONATION)); break; }; } public function gotoMainMenu():void{ dispatchEvent(new ControllerEvent(ControllerEvent.COMPLETE, MainSignal.GOTO_MAIN_MENU)); } public function pause():void{ _gamePaused = true; } private function onControllerMessageHandler(_arg1:ControllerEvent):void{ switch (String(_arg1.data)){ case LevelCompleteController.MESSAGE_GOTO_MAIN_MENU: case PauseMenuController.MESSAGE_GOTO_MAIN_MENU: gotoMainMenu(); break; case LevelCompleteController.MESSAGE_NEXT_LEVEL: dispatchEvent(new ControllerEvent(ControllerEvent.COMPLETE, MainSignal.NEXT_LEVEL)); break; case LevelCompleteController.MESSAGE_REPLAY_LEVEL: removeSubController(); hsm.sendSignal(new SignalEvent(SIGNAL_RESET)); break; case LevelCompleteController.MESSAGE_TRY_ANOTHER_LEVEL: dispatchEvent(new ControllerEvent(ControllerEvent.COMPLETE, MainSignal.SELECT_LEVEL)); break; case PauseMenuController.MESSAGE_RESUME: removeSubController(); _gamePaused = false; break; }; } } }//package bblaster.core.game
Section 13
//GameInfo (bblaster.core.game.GameInfo) package bblaster.core.game { import bblaster.managers.*; public class GameInfo { private static var _currentLevel:int = 0; public static function resetGame():void{ var _local1:int = GameInfo.levelReached; var _local2:int; while (_local2 <= _local1) { GameInfo.setBestLevelScore(_local2, 0); _local2++; }; levelReached = 0; } public static function setBestLevelScore(_arg1:int, _arg2:int):void{ Managers.soManager.setValue(("levelScore_" + _arg1), _arg2); } public static function get currentLevel():int{ return (_currentLevel); } public static function startGame(_arg1:int):void{ GameInfo._currentLevel = _arg1; } public static function get totalScore():int{ var _local1:int = GameInfo.levelReached; var _local2:int; var _local3:int; while (_local3 <= _local1) { _local2 = (_local2 + GameInfo.getBestLevelScore(_local3)); _local3++; }; return (_local2); } public static function set currentLevel(_arg1:int):void{ _currentLevel = _arg1; } public static function getBestLevelScore(_arg1:int):int{ var _local2:int = int(Managers.soManager.getValue(("levelScore_" + _arg1))); return (_local2); } public static function set levelReached(_arg1:int):void{ Managers.soManager.setValue("levelReached", _arg1); } public static function get levelReached():int{ var _local1:int = int(Managers.soManager.getValue("levelReached")); return (_local1); } } }//package bblaster.core.game
Section 14
//GameItem (bblaster.core.game.GameItem) package bblaster.core.game { import flash.display.*; import flash.events.*; import com.bigwigmedia.core.*; public class GameItem extends EventDispatcher implements IUpdatable, IDisposable { protected var _sprite:Sprite; public function GameItem(_arg1:Sprite){ _sprite = _arg1; } public function get sprite():Sprite{ return (_sprite); } public function update():void{ } public function dispose():void{ _sprite = null; } } }//package bblaster.core.game
Section 15
//GameModel (bblaster.core.game.GameModel) package bblaster.core.game { import flash.display.*; import flash.events.*; import bblaster.managers.*; import bblaster.core.game.events.*; import flash.utils.*; import Box2D.Collision.*; import Box2D.Collision.Shapes.*; import Box2D.Common.Math.*; import Box2D.Dynamics.*; import com.bigwigmedia.core.*; import com.bigwigmedia.utils.*; import bblaster.sound.*; import com.bigwigmedia.application.*; public class GameModel extends EventDispatcher implements IUpdatable, IDisposable { private var bombStrengthList:Array; private var detonated:Boolean;// = false private var explodedBombStrength:int; private var pauseCheckVelocityCounter:int;// = 0 private var maxLevelTimeCounter:int;// = 0 private var world:b2World; private var constantScoreCount:int; private var soundContactListener:SoundContactListener; private var bombModelsList:Array; private var worldTimeStep:Number; private var oldScore:int; private var firstBombExploded:Boolean; private var checkVelocityCounter:int;// = 0 private var bodyToParamsDict:Dictionary; public static const WORLD_ITERATIONS:int = 10; public static const MAX_LEVEL_TIME:int = 500; public static const PAUSE_BEFORE_CHECK_VELOCITY:int = 75; public static const CHECK_VELOCITY_RATE:int = 25; public static const MAX_WORLD_TIME_STEP:Number = 0.05; public static const MIN_VELOCITY_TOLERANCE:Number = 0.01; public static const WORLD_SCALE:Number = 30; public function GameModel(){ bodyToParamsDict = new Dictionary(); bombStrengthList = []; bombModelsList = []; super(); createWorld(); buildLevel(); } public function update():void{ var _local1:BombModel; var _local2:int; var _local3:int; var _local4:Number; var _local5:b2Body; if (!detonated){ return; }; if (((firstBombExploded) && (!((worldTimeStep == MAX_WORLD_TIME_STEP))))){ worldTimeStep = (worldTimeStep + 0.004); if (worldTimeStep > MAX_WORLD_TIME_STEP){ worldTimeStep = MAX_WORLD_TIME_STEP; }; }; world.Step(worldTimeStep, WORLD_ITERATIONS); for each (_local1 in bombModelsList) { _local1.update(); if (_local1.delay == 0){ firstBombExploded = true; explodeBomb(_local1); dispatchEvent(new GameModelEvent(GameModelEvent.EXPLODE_BOMB, _local1)); _local2 = bombModelsList.indexOf(_local1); bombModelsList.splice(_local2, 1); } else { dispatchEvent(new GameModelEvent(GameModelEvent.UPDATE_BOMB_TIMER, _local1)); }; }; dispatchEvent(new GameModelEvent(GameModelEvent.UPDATE_WORLD)); if (pauseCheckVelocityCounter++ < PAUSE_BEFORE_CHECK_VELOCITY){ if (checkVelocityCounter++ > CHECK_VELOCITY_RATE){ checkVelocityCounter = 0; dispatchEvent(new GameModelEvent(GameModelEvent.UPDATE_SCORE, levelScore)); }; } else { maxLevelTimeCounter++; if (checkVelocityCounter++ > CHECK_VELOCITY_RATE){ checkVelocityCounter = 0; _local3 = levelScore; dispatchEvent(new GameModelEvent(GameModelEvent.UPDATE_SCORE, _local3)); if (Math.abs((oldScore - _local3)) <= 1){ constantScoreCount++; } else { oldScore = _local3; constantScoreCount = 0; }; _local4 = 0; _local5 = world.GetBodyList(); while (_local5) { _local4 = (_local4 + _local5.GetLinearVelocity().Length()); _local5 = _local5.GetNext(); }; if ((((((((_local4 < MIN_VELOCITY_TOLERANCE)) || ((maxLevelTimeCounter > MAX_LEVEL_TIME)))) || ((((constantScoreCount == 3)) && ((_local3 > 0)))))) || ((((constantScoreCount == 5)) && ((_local4 < 0.5)))))){ dispatchEvent(new GameModelEvent(GameModelEvent.COMPLETE_DETONATION)); }; }; }; } private function addContactCallback(_arg1:b2ContactPoint):void{ var _local2:b2Body; if ((_arg1.shape1 is b2CircleShape)){ _local2 = _arg1.shape2.GetBody(); } else { if ((_arg1.shape2 is b2CircleShape)){ _local2 = _arg1.shape1.GetBody(); } else { return; }; }; _local2.WakeUp(); var _local3:b2Vec2 = _arg1.normal.Copy().Negative(); var _local4:Number = (_local3.Length() / Managers.configManager.getBombImpulse(explodedBombStrength)); _local3.x = (_local3.x / _local4); _local3.y = (_local3.y / _local4); _local2.ApplyImpulse(_local3, _arg1.position); } private function setAdjacentBlocks(_arg1:Array):void{ var _local4:b2Body; var _local5:b2XForm; var _local6:b2PolygonShape; var _local7:Array; var _local8:int; var _local9:int; var _local10:b2Body; var _local11:b2XForm; var _local12:b2PolygonShape; var _local13:Array; var _local14:int; var _local15:int; var _local16:b2Vec2; var _local17:b2Vec2; var _local18:Number; var _local19:Number; var _local20:int; var _local21:b2Vec2; var _local2:int = _arg1.length; var _local3:int; while (_local3 < _local2) { _local4 = _arg1[_local3]; _local5 = _local4.GetXForm(); _local6 = b2PolygonShape(_local4.GetShapeList()); _local7 = _local6.GetVertices(); _local8 = _local6.GetVertexCount(); _local9 = 0; while (_local9 < _local2) { _local10 = _arg1[_local9]; if (_local4 == _local10){ } else { _local11 = _local10.GetXForm(); _local12 = b2PolygonShape(_local10.GetShapeList()); _local13 = _local12.GetVertices(); _local14 = _local12.GetVertexCount(); _local15 = 0; while (_local15 < _local8) { _local16 = b2Math.b2MulX(_local5, _local7[_local15]); _local17 = b2Math.b2MulX(_local5, ((_local15 == (_local8 - 1))) ? _local7[0] : _local7[(_local15 + 1)]); _local18 = Math.abs((_local17.x - _local16.x)); _local19 = Math.abs((_local17.y - _local16.y)); _local20 = 0; while (_local20 < _local14) { _local21 = b2Math.b2MulX(_local11, _local13[_local20]); if (((MathUtil.nearEquals((Math.abs((_local16.x - _local21.x)) + Math.abs((_local17.x - _local21.x))), _local18, 0.2)) && (MathUtil.nearEquals((Math.abs((_local16.y - _local21.y)) + Math.abs((_local17.y - _local21.y))), _local19, 0.2)))){ _local4.GetUserData()[_local10] = _local10; _local10.GetUserData()[_local4] = _local4; }; _local20++; }; _local15++; }; }; _local9++; }; _local3++; }; } public function getBombStrengthList():Array{ return (bombStrengthList.slice()); } public function dispose():void{ bodyToParamsDict = new Dictionary(); var _local1:b2Body = world.GetBodyList(); while (_local1) { _local1.removeEventListener("wakeup", onBodyWakeupHandler); _local1.SetUserData(null); world.DestroyBody(_local1); _local1 = _local1.GetNext(); }; world.SetContactListener(null); world = null; bombModelsList = []; } public function detonate(_arg1:Array):void{ bombModelsList = _arg1; checkVelocityCounter = 0; pauseCheckVelocityCounter = 0; maxLevelTimeCounter = 0; detonated = true; } private function onBodyWakeupHandler(_arg1:Event):void{ var _local4:b2Body; var _local5:Dictionary; var _local2:b2Body = (_arg1.target as b2Body); _local2.removeEventListener("wakeup", onBodyWakeupHandler); var _local3:Dictionary = _local2.GetUserData(); for each (_local4 in _local3) { _local5 = _local4.GetUserData(); delete _local5[_local2]; _local4.WakeUp(); }; } public function get levelScore():int{ var _local9:BlockParams; var _local10:Number; var _local11:Number; var _local12:Number; var _local1:Number = 0; var _local2:Number = 0; var _local3:int; var _local4:int; var _local5:b2Body = world.GetBodyList(); while (_local5) { _local9 = bodyToParamsDict[_local5]; if (_local9){ _local10 = (_local5.GetPosition().x - _local9.x); _local11 = (_local5.GetPosition().y - _local9.y); _local12 = Math.sqrt(((_local10 * _local10) + (_local11 * _local11))); if (_local12 > 450){ _local12 = 450; }; if (_local9.avoid){ _local4++; _local2 = (_local2 + (_local12 * _local5.GetMass())); } else { _local3++; _local1 = (_local1 + (_local12 * _local5.GetMass())); }; }; _local5 = _local5.GetNext(); }; var _local6:Number = ((_local1 / _local3) * Managers.configManager.scoreMultiplier); var _local7:Number = ((_local4 == 0)) ? 0 : ((_local2 / _local4) * Managers.configManager.penaltyMultiplier); var _local8:int = (_local6 - _local7); return (((_local8 < 0)) ? 0 : _local8); } public function getBodyToParamsDict():Dictionary{ return (bodyToParamsDict); } private function createWorld():void{ var _local3:b2BodyDef; var _local4:b2PolygonDef; var _local5:b2Body; soundContactListener = new SoundContactListener(); var _local1:b2AABB = new b2AABB(); _local1.lowerBound.Set((-300 / WORLD_SCALE), (-600 / WORLD_SCALE)); _local1.upperBound.Set(((300 + 640) / WORLD_SCALE), (520 / WORLD_SCALE)); var _local2:b2Vec2 = new b2Vec2(0, 5); world = new b2World(_local1, _local2, true); world.SetContactListener(soundContactListener); _local3 = new b2BodyDef(); _local3.position.x = (320 / WORLD_SCALE); _local3.position.y = (480 / WORLD_SCALE); _local4 = new b2PolygonDef(); _local4.SetAsBox((1000 / WORLD_SCALE), (70 / WORLD_SCALE)); _local4.friction = Managers.configManager.materialFriction_1; _local4.density = 0; _local5 = world.CreateBody(_local3); _local5.CreateShape(_local4); _local5.SetMass(new b2MassData()); SoundID.reinitializeHitSounds(); } private function explodeBomb(_arg1:BombModel):void{ var _local2:CustomContactListener = new CustomContactListener(addContactCallback); world.SetContactListener(_local2); var _local3:b2BodyDef = new b2BodyDef(); _local3.position.x = (_arg1.x / WORLD_SCALE); _local3.position.y = (_arg1.y / WORLD_SCALE); explodedBombStrength = _arg1.strength; var _local4:b2CircleDef = new b2CircleDef(); _local4.radius = (Managers.configManager.getBombRadius(explodedBombStrength) / WORLD_SCALE); _local4.density = 0; _local4.isSensor = true; var _local5:b2Body = world.CreateBody(_local3); _local5.CreateShape(_local4); _local5.SetMassFromShapes(); world.Step(worldTimeStep, WORLD_ITERATIONS); world.SetContactListener(soundContactListener); _local2.dispose(); world.DestroyBody(_local5); Managers.soundManager.playSound(SoundID.EXPLOSION); } public function resetLevel():void{ detonated = false; var _local1:b2Body = world.GetBodyList(); while (_local1) { _local1.removeEventListener("wakeup", onBodyWakeupHandler); _local1.SetUserData(null); world.DestroyBody(_local1); _local1 = _local1.GetNext(); }; createWorld(); buildLevel(); } public function buildLevel():void{ var _local4:XML; var _local5:Array; var _local6:b2Body; var _local7:Number; var _local8:Number; var _local9:Number; var _local10:Number; var _local11:Array; var _local12:Array; var _local13:int; var _local14:b2Vec2; var _local15:Number; var _local16:Number; var _local17:int; var _local18:Boolean; var _local19:b2BodyDef; var _local20:b2PolygonDef; var _local21:b2Body; var _local22:BlockParams; bodyToParamsDict = new Dictionary(); constantScoreCount = 0; oldScore = 0; worldTimeStep = (1 / 300); firstBombExploded = false; var _local1:XML = Managers.configManager.getLevelConfig(GameInfo.currentLevel); bombStrengthList = String(_local1.@bombs).split(""); var _local2:int; while (_local2 < bombStrengthList.length) { bombStrengthList[_local2] = int(bombStrengthList[_local2]); _local2++; }; var _local3:XMLList = _local1.blocks.block; for each (_local4 in _local3) { _local7 = Number(_local4.tx); _local8 = Number(_local4.ty); _local9 = 0; _local10 = 0; _local11 = []; _local12 = String(_local4.vertices).split(","); _local13 = (_local12.length / 2); _local17 = 0; while (_local17 < _local13) { _local15 = (Number(_local12[(_local17 * 2)]) + _local7); _local16 = (Number(_local12[((_local17 * 2) + 1)]) + _local8); _local11.push(new b2Vec2(_local15, _local16)); _local9 = (_local9 + _local15); _local10 = (_local10 + _local16); _local17++; }; _local9 = (_local9 / _local13); _local10 = (_local10 / _local13); _local17 = 0; while (_local17 < _local13) { _local14 = _local11[_local17]; _local11[_local17].x = (_local14.x - _local9); _local14.y = (_local14.y - _local10); _local14.x = (_local14.x / WORLD_SCALE); _local14.y = (_local14.y / WORLD_SCALE); _local17++; }; _local18 = (_local4.@avoid == "true"); _local19 = new b2BodyDef(); _local19.allowSleep = true; _local19.isSleeping = true; _local20 = new b2PolygonDef(); _local20.vertexCount = _local13; _local20.vertices = _local11; _local20.density = (_local18) ? Managers.configManager.materialDensity_2 : Managers.configManager.materialDensity_1; _local20.friction = (_local18) ? Managers.configManager.materialFriction_2 : Managers.configManager.materialFriction_1; _local21 = world.CreateBody(_local19); _local21.SetUserData(new Dictionary()); _local21.addEventListener("wakeup", onBodyWakeupHandler); _local21.CreateShape(_local20); _local21.SetMassFromShapes(); _local21.SetXForm(new b2Vec2((_local9 / WORLD_SCALE), (_local10 / WORLD_SCALE)), ((Number(_local4.rotation) / 180) * Math.PI)); _local22 = new BlockParams(_local11, (_local9 / WORLD_SCALE), (_local10 / WORLD_SCALE), Number(_local4.rotation), _local18); bodyToParamsDict[_local21] = _local22; }; _local5 = []; _local6 = world.GetBodyList(); while (_local6) { if (_local6.GetUserData()){ _local5.push(_local6); }; _local6 = _local6.GetNext(); }; setAdjacentBlocks(_local5); } private function drawVertexOnStage(_arg1:Number, _arg2:Number):void{ var _local3:Shape = new Shape(); _local3.graphics.beginFill(0xFF0000, 0.5); _local3.graphics.drawCircle(0, 0, 4); _local3.x = (_arg1 * WORLD_SCALE); _local3.y = (_arg2 * WORLD_SCALE); ApplicationGlobals.application.stage.addChild(_local3); } } }//package bblaster.core.game
Section 16
//GameView (bblaster.core.game.GameView) package bblaster.core.game { import flash.display.*; import flash.events.*; import bblaster.managers.*; import bblaster.core.game.events.*; import flash.utils.*; import Box2D.Dynamics.*; import com.bigwigmedia.core.*; import com.bigwigmedia.ui.containers.*; public class GameView extends Sprite implements IUpdatable, IDisposable { private var blocksList:Array; private var scoreGauge:ScoreGauge; private var bombsList:Array; private var blocksHolder:Sprite; private var bombsHolder:Sprite; private var _bombStrengthList:Array; private var _hud:HUD; private var _controller:GameController; private var itemsList:Array; public function GameView(_arg1:GameController, _arg2:Array){ blocksList = []; bombsList = []; _bombStrengthList = []; itemsList = []; super(); _controller = _arg1; _bombStrengthList = _arg2; addChild(new GameViewBackground()); blocksHolder = new Sprite(); addChild(blocksHolder); _hud = new HUD(); _hud.addEventListener(HUDEvent.ADD_BOMB, onHUDEventHandler); _hud.addEventListener(HUDEvent.DETONATE, onHUDEventHandler); _hud.addEventListener(HUDEvent.MENU, onHUDEventHandler); _hud.addEventListener(HUDEvent.RESET_LEVEL, onHUDEventHandler); _hud.showBombButtons(_bombStrengthList); addChild(_hud); bombsHolder = new Sprite(); addChild(bombsHolder); scoreGauge = new ScoreGauge(); scoreGauge.visible = false; scoreGauge.move(50, 413); addChild(scoreGauge); } private function onBombDeleteHandler(_arg1:BombEvent):void{ var _local2:Bomb = (_arg1.target as Bomb); _bombStrengthList.push(_local2.strength); _hud.showBombButtons(_bombStrengthList); bombsHolder.removeChild(_local2.sprite); bombsList.splice(bombsList.indexOf(_local2), 1); _local2.removeEventListener(BombEvent.DELETE, onBombDeleteHandler); _local2.dispose(); } public function getBombsList():Array{ return (bombsList); } public function update():void{ var _local1:IUpdatable; for each (_local1 in blocksList) { _local1.update(); }; } public function showInstructionsPopup():void{ var _local1:InstructionsPopup = new InstructionsPopup(); _local1.addEventListener(Event.CLOSE, onHintPopupCloseHandler); addChild(_local1); } public function set scoreGaugeCurrentValue(_arg1:int):void{ scoreGauge.value = _arg1; } private function onHUDEventHandler(_arg1:HUDEvent):void{ switch (_arg1.type){ case HUDEvent.ADD_BOMB: addBomb((_arg1.data as int)); break; case HUDEvent.DETONATE: if (bombsList.length > 0){ _controller.detonate(); }; break; case HUDEvent.RESET_LEVEL: _controller.resetLevel(); break; case HUDEvent.MENU: _controller.showMenu(); break; }; } private function onHintPopupCloseHandler(_arg1:Event):void{ var _local2:LayoutContainer = (_arg1.target as LayoutContainer); if (_local2){ removeChild(_local2); _local2.removeEventListener(Event.CLOSE, onHintPopupCloseHandler); _local2.dispose(); }; } public function showResultPopup(_arg1:String, _arg2:uint=0xFFFFFF):void{ var _local3:ResultPopup = new ResultPopup(_arg1, _arg2); addChild(_local3.sprite); itemsList.push(_local3); } private function onItemCompleteHandler(_arg1:Event):void{ var _local2:GameItem = (_arg1.target as GameItem); _local2.removeEventListener(Event.COMPLETE, onItemCompleteHandler); removeChild(_local2.sprite); itemsList.splice(itemsList.indexOf(_local2), 1); _local2.dispose(); } private function addBomb(_arg1:int):void{ var _local2:int = _bombStrengthList.indexOf(_arg1); _bombStrengthList.splice(_local2, 1); _hud.showBombButtons(_bombStrengthList); var _local3:Bomb = new Bomb(_arg1); _local3.addEventListener(BombEvent.DELETE, onBombDeleteHandler); bombsList.push(_local3); bombsHolder.addChild(_local3.sprite); _local3.sprite.x = stage.mouseX; _local3.sprite.y = stage.mouseY; _local3.startDrag(); } public function showScoreGauge(_arg1:int):void{ scoreGauge.initialize(_arg1); scoreGauge.visible = true; } public function dispose():void{ var _local1:Bomb; var _local2:GameItem; removeBlocks(); for each (_local1 in bombsList) { bombsHolder.removeChild(_local1.sprite); _local1.removeEventListener(BombEvent.DELETE, onBombDeleteHandler); _local1.dispose(); }; bombsList = []; _hud.dispose(); _hud = null; scoreGauge.dispose(); scoreGauge = null; for each (_local2 in itemsList) { _local2.removeEventListener(Event.COMPLETE, onItemCompleteHandler); removeChild(_local2.sprite); _local2.dispose(); }; itemsList = []; } public function set bombsEnabled(_arg1:Boolean):void{ var _local2:Bomb; for each (_local2 in bombsList) { _local2.uiEnabled = _arg1; }; } public function showHintPopup():void{ var _local1:HintPopup = new HintPopup(); _local1.addEventListener(Event.CLOSE, onHintPopupCloseHandler); addChild(_local1); } public function hideScoreGauge():void{ scoreGauge.visible = false; } public function explodeBomb(_arg1:int):void{ var _local2:Bomb; var _local3:Number; var _local4:MovieClip; var _local5:AnimatedEffect; var _local6:MovieClip; var _local7:AnimatedEffect; for each (_local2 in bombsList) { if (_local2.id == _arg1){ _local2.sprite.visible = false; _local3 = Managers.configManager.getBombRadius(_local2.strength); _local4 = new BlastAnimation(); new BlastAnimation().scaleX = (_local4.scaleY = (_local3 / 70)); _local5 = new AnimatedEffect(_local4); _local5.sprite.x = _local2.sprite.x; _local5.sprite.y = _local2.sprite.y; _local5.addEventListener(Event.COMPLETE, onItemCompleteHandler); addChild(_local5.sprite); itemsList.push(_local5); _local6 = new ExplosionAnimation(); new ExplosionAnimation().width = (_local6.height = _local3); _local7 = new AnimatedEffect(_local6); _local7.sprite.x = _local2.sprite.x; _local7.sprite.y = _local2.sprite.y; _local7.addEventListener(Event.COMPLETE, onItemCompleteHandler); addChild(_local7.sprite); itemsList.push(_local7); break; }; }; } public function createLevel(_arg1:Dictionary):void{ var _local2:Object; var _local3:b2Body; var _local4:BlockParams; var _local5:Block; removeBlocks(); for (_local2 in _arg1) { _local3 = (_local2 as b2Body); _local4 = _arg1[_local3]; _local5 = new Block(_local4.vertices, _local4.avoid, _local3); blocksList.push(_local5); blocksHolder.addChild(_local5.sprite); _local5.update(); }; } private function removeBlocks():void{ var _local1:Block; for each (_local1 in blocksList) { blocksHolder.removeChild(_local1.sprite); _local1.dispose(); }; blocksList = []; } public function resetLevel():void{ var _local1:Bomb; var _local2:GameItem; for each (_local1 in bombsList) { _local1.showDelayLabel(_local1.delay); _local1.sprite.visible = true; _local1.uiEnabled = true; }; for each (_local2 in itemsList) { _local2.removeEventListener(Event.COMPLETE, onItemCompleteHandler); removeChild(_local2.sprite); _local2.dispose(); }; itemsList = []; } public function get hud():HUD{ return (_hud); } public function updateEffects():void{ var _local1:GameItem; for each (_local1 in itemsList) { _local1.update(); }; scoreGauge.update(); } public function updateBombTimer(_arg1:int, _arg2:int):void{ var _local3:Bomb; for each (_local3 in bombsList) { if (_local3.id == _arg1){ _local3.showDelayLabel(_arg2); break; }; }; } } }//package bblaster.core.game
Section 17
//HintPopup (bblaster.core.game.HintPopup) package bblaster.core.game { import flash.events.*; import com.bigwigmedia.ui.*; import bblaster.managers.*; import com.bigwigmedia.effects.*; import flash.text.*; import com.bigwigmedia.ui.containers.*; import com.bigwigmedia.ui.styles.*; public class HintPopup extends LayoutContainer { private var continueBtn:LabelButton; public function HintPopup(){ setSize(640, 480); addChild(new PauseMenuViewBackground()); var _local1:TextArea = new TextArea(); _local1.setSize(270, 100); var _local2:StyleSheet = new StyleSheet(); var _local3:Object = new Object(); _local3.fontFamily = Managers.fontManager.getFontNameByID("Font_1"); _local3.color = "#FFFFFF"; _local3.fontSize = 20; _local3.textAlign = "center"; _local2.setStyle(".normal", _local3); _local3 = new Object(); _local3.fontFamily = Managers.fontManager.getFontNameByID("Font_1"); _local3.color = "#E96565"; _local3.fontSize = 20; _local3.textAlign = "center"; _local2.setStyle(".red", _local3); _local1.setStyle(AbstractComponentStyle.STYLE_SHEET, _local2); _local1.text = "<span class = 'normal'>Leave <span class = 'red'>red</span> blocks untouched to get higher scores</span>"; addChildToLayout(_local1, {horizontalCenter:0, top:180}); continueBtn = new LabelButton(); continueBtn.label = "CONTINUE"; continueBtn.beacon = new ColorBeacon(0xFFCC00); addChildToLayout(continueBtn, {horizontalCenter:0, bottom:175}); this.addEventListener(MouseEvent.CLICK, onMouseClickHandler); } private function onMouseClickHandler(_arg1:MouseEvent):void{ if (_arg1.target == continueBtn){ dispatchEvent(new Event(Event.CLOSE)); }; } override public function dispose():void{ this.removeEventListener(MouseEvent.CLICK, onMouseClickHandler); super.dispose(); } } }//package bblaster.core.game
Section 18
//HUD (bblaster.core.game.HUD) package bblaster.core.game { import flash.events.*; import com.bigwigmedia.ui.*; import bblaster.managers.*; import bblaster.core.game.events.*; import flash.text.*; import com.bigwigmedia.ui.containers.*; import com.bigwigmedia.ui.styles.*; import bblaster.sound.*; public class HUD extends LayoutContainer { private var bombButtonsBox:HBox; private var resetBtn:IconicButton; private var twoDPlayBtn:IconicButton; private var detonateBtn:IconicButton; private var menuBtn:IconicButton; public function HUD(){ setSize(640, 70); move(0, (480 - this.height)); addChild(new HUDBackground()); var _local1:Label = new Label(); _local1.setStyle(AbstractComponentStyle.TEXT_FORMAT, new TextFormat(Managers.fontManager.getFontNameByID("Font_1"), 18, 0xFFFFFF)); _local1.text = ("Level " + String((GameInfo.currentLevel + 1))); addChildToLayout(_local1, {left:5, top:-((480 - this.height))}); var _local2:Label = new Label(); _local2.setStyle(AbstractComponentStyle.TEXT_FORMAT, new TextFormat(Managers.fontManager.getFontNameByID("Font_1"), 18, 0xFFFFFF)); _local2.text = (("«" + Managers.configManager.getLevelName(GameInfo.currentLevel)) + "»"); addChildToLayout(_local2, {right:5, top:-((480 - this.height))}); detonateBtn = new IconicButton(DetonateBtnUpIcon, DetonateBtnOverIcon); detonateBtn.setStyle(IconicButtonStyle.UP_DECORATION, null); detonateBtn.setStyle(IconicButtonStyle.OVER_DECORATION, null); detonateBtn.move(266, 0); detonateBtn.setStyle(AbstractButtonStyle.MOUSE_DOWN_HANDLER, onDetonateBtnMouseDownHandler); addChild(detonateBtn); resetBtn = new IconicButton(ResetBtnUpIcon, ResetBtnOverIcon); resetBtn.setStyle(IconicButtonStyle.UP_DECORATION, null); resetBtn.setStyle(IconicButtonStyle.OVER_DECORATION, null); resetBtn.move(201, 0); addChild(resetBtn); menuBtn = new IconicButton(MenuBtnUpIcon, MenuBtnOverIcon); menuBtn.setStyle(IconicButtonStyle.UP_DECORATION, null); menuBtn.setStyle(IconicButtonStyle.OVER_DECORATION, null); menuBtn.move(372, 0); addChild(menuBtn); twoDPlayBtn = new IconicButton(TwoDPlayButtonIcon); twoDPlayBtn.scale = 0.9; addChildToLayout(twoDPlayBtn, {right:10, bottom:15}); bombButtonsBox = new HBox(); bombButtonsBox.gap = 5; bombButtonsBox.autoSize = true; bombButtonsBox.move(0, 0); addChildToLayout(bombButtonsBox, {left:10, bottom:10}); this.addEventListener(MouseEvent.CLICK, onMouseClickHandler); this.addEventListener(MouseEvent.MOUSE_DOWN, onMouseDownHandler); } private function onMouseDownHandler(_arg1:MouseEvent):void{ var _local2:BombButton = (_arg1.target as BombButton); if (_local2){ dispatchEvent(new HUDEvent(HUDEvent.ADD_BOMB, _local2.strength)); }; } public function set bombButtonsVisible(_arg1:Boolean):void{ bombButtonsBox.visible = _arg1; } private function onDetonateBtnMouseDownHandler(_arg1:AbstractButton):void{ Managers.soundManager.playSound(SoundID.CLICK_1); } private function onMouseClickHandler(_arg1:MouseEvent):void{ switch (_arg1.target){ case detonateBtn: dispatchEvent(new HUDEvent(HUDEvent.DETONATE)); break; case resetBtn: dispatchEvent(new HUDEvent(HUDEvent.RESET_LEVEL)); break; case menuBtn: dispatchEvent(new HUDEvent(HUDEvent.MENU)); break; case twoDPlayBtn: Managers.urlCaller.mainLink(); break; }; } public function showBombButtons(_arg1:Array):void{ var _local3:BombButton; var _local4:BombButton; while (bombButtonsBox.numChildren > 0) { _local3 = (bombButtonsBox.removeChildAt(0) as BombButton); _local3.dispose(); }; _arg1.sort(Array.NUMERIC); var _local2:int; while (_local2 < _arg1.length) { _local4 = new BombButton(_arg1[_local2]); bombButtonsBox.addChildToLayout(_local4); _local2++; }; } override public function dispose():void{ this.removeEventListener(MouseEvent.CLICK, onMouseClickHandler); this.removeEventListener(MouseEvent.MOUSE_DOWN, onMouseDownHandler); super.dispose(); } } }//package bblaster.core.game
Section 19
//InstructionsPopup (bblaster.core.game.InstructionsPopup) package bblaster.core.game { import flash.events.*; import com.bigwigmedia.ui.*; import com.bigwigmedia.effects.*; import com.bigwigmedia.ui.containers.*; import bblaster.ui.*; public class InstructionsPopup extends LayoutContainer { private var continueBtn:LabelButton; public function InstructionsPopup(){ setSize(640, 480); addChild(new InstructionsViewBackground()); continueBtn = new GameButton(); continueBtn.label = "Continue"; continueBtn.beacon = new ColorBeacon(0xFFCC00); addChildToLayout(continueBtn, {right:20, bottom:20}); this.addEventListener(MouseEvent.CLICK, onMouseClickHandler); } private function onMouseClickHandler(_arg1:MouseEvent):void{ if (_arg1.target == continueBtn){ dispatchEvent(new Event(Event.CLOSE)); }; } override public function dispose():void{ this.removeEventListener(MouseEvent.CLICK, onMouseClickHandler); super.dispose(); } } }//package bblaster.core.game
Section 20
//LevelCompleteController (bblaster.core.game.LevelCompleteController) package bblaster.core.game { import bblaster.core.events.*; import flash.display.*; import flash.events.*; import bblaster.core.*; public class LevelCompleteController extends EventDispatcher implements IController { private var _view:LevelCompleteView; public static const MESSAGE_NEXT_LEVEL:String = "LevelCompleteController.MESSAGE_NEXT_LEVEL"; public static const MESSAGE_GOTO_MAIN_MENU:String = "LevelCompleteController.MESSAGE_GOTO_MAIN_MENU"; public static const MESSAGE_REPLAY_LEVEL:String = "LevelCompleteController.MESSAGE_REPLAY_LEVEL"; public static const MESSAGE_TRY_ANOTHER_LEVEL:String = "LevelCompleteController.MESSAGE_TRY_ANOTHER_LEVEL"; public function LevelCompleteController(_arg1:int, _arg2:int){ _view = new LevelCompleteView(this, _arg1, _arg2); } public function get view():DisplayObject{ return (_view); } public function dispose():void{ _view.dispose(); _view = null; } public function nextLevel():void{ dispatchEvent(new ControllerEvent(ControllerEvent.MESSAGE, LevelCompleteController.MESSAGE_NEXT_LEVEL)); } public function initialize():void{ dispatchEvent(new ControllerEvent(ControllerEvent.READY)); } public function gotoMainMenu():void{ dispatchEvent(new ControllerEvent(ControllerEvent.MESSAGE, LevelCompleteController.MESSAGE_GOTO_MAIN_MENU)); } public function tryAnotherLevel():void{ dispatchEvent(new ControllerEvent(ControllerEvent.MESSAGE, LevelCompleteController.MESSAGE_TRY_ANOTHER_LEVEL)); } public function replayLevel():void{ dispatchEvent(new ControllerEvent(ControllerEvent.MESSAGE, LevelCompleteController.MESSAGE_REPLAY_LEVEL)); } } }//package bblaster.core.game
Section 21
//LevelCompleteView (bblaster.core.game.LevelCompleteView) package bblaster.core.game { import flash.display.*; import flash.events.*; import com.bigwigmedia.ui.*; import bblaster.managers.*; import com.bigwigmedia.effects.*; import flash.text.*; import com.bigwigmedia.utils.*; import com.bigwigmedia.ui.containers.*; import com.bigwigmedia.ui.styles.*; import bblaster.ui.*; public class LevelCompleteView extends LayoutContainer { private var tryAnotherLevelBtn:LabelButton; private var submitScoreBtn:LabelButton; private var mainMenuBtn:LabelButton; private var nextLevelBtn:LabelButton; private var _controller:LevelCompleteController; private var replayLevelBtn:LabelButton; public function LevelCompleteView(_arg1:LevelCompleteController, _arg2:int, _arg3:int){ _controller = _arg1; setSize(640, 480); var _local4 = (GameInfo.getBestLevelScore(GameInfo.currentLevel) >= _arg3); var _local5:MovieClip = new LevelCompleteViewBackground(); _local5.gotoAndStop((_local4) ? 1 : 2); addChild(_local5); var _local6:Label = new Label(); _local6.text = ("NEEDED: $" + NumberFormatter.formatNumber(_arg3)); addChildToLayout(_local6, {horizontalCenter:-150, top:20}); var _local7:Label = new Label(); if (_arg2 >= _arg3){ _local7.setStyle(AbstractComponentStyle.TEXT_FORMAT, new TextFormat(Managers.fontManager.getFontNameByID("Font_1"), 26, 0xFF00)); } else { _local7.setStyle(AbstractComponentStyle.TEXT_FORMAT, new TextFormat(Managers.fontManager.getFontNameByID("Font_1"), 26, 0xFF0000)); }; _local7.text = ("EARNED: $" + NumberFormatter.formatNumber(_arg2)); addChildToLayout(_local7, {horizontalCenter:-150, top:50}); var _local8:Label = new Label(); _local8.text = ("BEST: $" + NumberFormatter.formatNumber(GameInfo.getBestLevelScore(GameInfo.currentLevel))); addChildToLayout(_local8, {horizontalCenter:-150, top:80}); var _local9:Label = new Label(); _local9.text = ("TOTAL: $" + NumberFormatter.formatNumber(GameInfo.totalScore)); addChildToLayout(_local9, {horizontalCenter:-150, top:110}); if (GameInfo.getBestLevelScore(GameInfo.currentLevel) >= _arg3){ nextLevelBtn = new GameButton(); nextLevelBtn.label = "CONTINUE"; nextLevelBtn.beacon = new ColorBeacon(0xFFCC00); addChildToLayout(nextLevelBtn, {right:20, bottom:260}); }; replayLevelBtn = new GameButton(); replayLevelBtn.label = "REPLAY LEVEL"; addChildToLayout(replayLevelBtn, {right:20, bottom:200}); tryAnotherLevelBtn = new GameButton(); tryAnotherLevelBtn.label = "SELECT LEVEL"; addChildToLayout(tryAnotherLevelBtn, {right:20, bottom:140}); submitScoreBtn = new GameButton(); submitScoreBtn.label = "SUBMIT SCORE"; addChildToLayout(submitScoreBtn, {right:20, bottom:80}); mainMenuBtn = new GameButton(); mainMenuBtn.label = "MAIN MENU"; addChildToLayout(mainMenuBtn, {right:20, bottom:20}); addEventListener(MouseEvent.CLICK, onMouseClickHandler); } override public function dispose():void{ removeEventListener(MouseEvent.CLICK, onMouseClickHandler); super.dispose(); } private function onMouseClickHandler(_arg1:MouseEvent):void{ switch (_arg1.target){ case nextLevelBtn: _controller.nextLevel(); break; case replayLevelBtn: _controller.replayLevel(); break; case tryAnotherLevelBtn: _controller.tryAnotherLevel(); break; case submitScoreBtn: Managers.urlCaller.submitScore(GameInfo.totalScore); break; case mainMenuBtn: _controller.gotoMainMenu(); break; }; } } }//package bblaster.core.game
Section 22
//PauseMenuController (bblaster.core.game.PauseMenuController) package bblaster.core.game { import bblaster.core.events.*; import flash.display.*; import flash.events.*; import bblaster.core.*; public class PauseMenuController extends EventDispatcher implements IController { private var _view:PauseMenuView; public static const MESSAGE_GOTO_MAIN_MENU:String = "PauseMenuController.MESSAGE_GOTO_MAIN_MENU"; public static const MESSAGE_RESUME:String = "PauseMenuController.MESSAGE_RESUME"; public function PauseMenuController(){ _view = new PauseMenuView(this); } public function get view():DisplayObject{ return (_view); } public function initialize():void{ dispatchEvent(new ControllerEvent(ControllerEvent.READY)); } public function gotoMainMenu():void{ dispatchEvent(new ControllerEvent(ControllerEvent.MESSAGE, PauseMenuController.MESSAGE_GOTO_MAIN_MENU)); } public function resume():void{ dispatchEvent(new ControllerEvent(ControllerEvent.MESSAGE, PauseMenuController.MESSAGE_RESUME)); } public function dispose():void{ _view.dispose(); _view = null; } } }//package bblaster.core.game
Section 23
//PauseMenuView (bblaster.core.game.PauseMenuView) package bblaster.core.game { import flash.events.*; import com.bigwigmedia.ui.*; import bblaster.managers.*; import com.bigwigmedia.effects.*; import com.bigwigmedia.ui.containers.*; public class PauseMenuView extends LayoutContainer { private var switchSoundBtn:LabelButton; private var mainMenuBtn:LabelButton; private var resumeBtn:LabelButton; private var _controller:PauseMenuController; private var viewScoresBtn:LabelButton; public function PauseMenuView(_arg1:PauseMenuController){ _controller = _arg1; setSize(640, 480); addChild(new PauseMenuViewBackground()); resumeBtn = new LabelButton(); resumeBtn.label = "RESUME"; resumeBtn.beacon = new ColorBeacon(0xFFCC00); addChildToLayout(resumeBtn, {horizontalCenter:0, verticalCenter:-45}); switchSoundBtn = new LabelButton(); switchSoundBtn.label = soundBtnLabel; addChildToLayout(switchSoundBtn, {horizontalCenter:0, verticalCenter:-15}); viewScoresBtn = new LabelButton(); viewScoresBtn.label = "VIEW SCORES"; addChildToLayout(viewScoresBtn, {horizontalCenter:0, verticalCenter:15}); mainMenuBtn = new LabelButton(); mainMenuBtn.label = "MAIN MENU"; addChildToLayout(mainMenuBtn, {horizontalCenter:0, verticalCenter:45}); addEventListener(MouseEvent.CLICK, onMouseClickHandler); } private function get soundBtnLabel():String{ var _local1:Boolean = (Managers.soManager.getValue("soundEnabled") as Boolean); return ((_local1) ? "SWITCH SOUND OFF" : "SWITCH SOUND ON"); } private function onMouseClickHandler(_arg1:MouseEvent):void{ var _local2:Boolean; switch (_arg1.target){ case resumeBtn: _controller.resume(); break; case viewScoresBtn: Managers.urlCaller.viewScores(); break; case mainMenuBtn: _controller.gotoMainMenu(); break; case switchSoundBtn: _local2 = (Managers.soManager.getValue("soundEnabled") as Boolean); Managers.soManager.setValue("soundEnabled", !(_local2)); Managers.soundManager.setChannelsVolume((_local2) ? 0 : 1); switchSoundBtn.label = soundBtnLabel; break; }; } override public function dispose():void{ removeEventListener(MouseEvent.CLICK, onMouseClickHandler); super.dispose(); } } }//package bblaster.core.game
Section 24
//ResultPopup (bblaster.core.game.ResultPopup) package bblaster.core.game { import com.bigwigmedia.ui.*; import bblaster.managers.*; import flash.text.*; import com.bigwigmedia.ui.styles.*; import com.boostworthy.animation.easing.*; public class ResultPopup extends GameItem { private var timeCount:int;// = 0 private var labelInitY:Number; private var label:Label; public static const DURATION:int = 40; public function ResultPopup(_arg1:String, _arg2:uint){ label = new Label(); label.text = _arg1; label.setStyle(AbstractComponentStyle.TEXT_FORMAT, new TextFormat(Managers.fontManager.getFontNameByID("Font_1"), 40, _arg2)); label.drawNow(); labelInitY = Math.round(-(label.height)); label.x = ((640 - label.width) / 2); label.y = labelInitY; super(label); } override public function update():void{ if (timeCount < (DURATION + 1)){ label.y = Transitions.bounce(timeCount++, labelInitY, 240, DURATION); }; } override public function dispose():void{ label.dispose(); super.dispose(); } } }//package bblaster.core.game
Section 25
//ScoreGauge (bblaster.core.game.ScoreGauge) package bblaster.core.game { import flash.display.*; import com.bigwigmedia.ui.*; import bblaster.managers.*; import flash.text.*; import com.bigwigmedia.utils.*; import com.bigwigmedia.ui.containers.*; import com.bigwigmedia.ui.styles.*; public class ScoreGauge extends LayoutContainer { private var scoreLabel:Label; private var arrowRotation:Number; private var arrow:DisplayObject; private var goal:int; private var _value:int; private var vr:Number; public function ScoreGauge(){ this.mouseChildren = (this.mouseEnabled = false); setSize(86, 70); var _local1:Sprite = new GaugeBackground(); addChild(_local1); arrow = _local1.getChildByName("_arrow"); scoreLabel = new Label(); scoreLabel.setStyle(AbstractComponentStyle.DECORATION, null); scoreLabel.setStyle(AbstractComponentStyle.TEXT_FORMAT, new TextFormat(Managers.fontManager.getFontNameByID("Font_1"), 16, 0xFFFFFF)); addChildToLayout(scoreLabel, {horizontalCenter:0, bottom:6}); } public function update():void{ var _local1:Number = ((((90 * _value) / goal) - arrowRotation) * 0.1); vr = (vr + _local1); vr = (vr * 0.9); arrowRotation = (arrowRotation + vr); arrow.rotation = ((arrowRotation < 0)) ? 0 : ((arrowRotation > 180)) ? 180 : arrowRotation; } public function initialize(_arg1:int):void{ scoreLabel.text = "$0"; this.goal = _arg1; _value = 0; vr = 0; arrowRotation = 0; arrow.rotation = 0; } public function set value(_arg1:int):void{ scoreLabel.text = ("$" + NumberFormatter.formatNumber(_arg1)); _value = _arg1; } } }//package bblaster.core.game
Section 26
//SoundContactListener (bblaster.core.game.SoundContactListener) package bblaster.core.game { import bblaster.managers.*; import Box2D.Collision.*; import Box2D.Dynamics.*; import bblaster.sound.*; public class SoundContactListener extends b2ContactListener { public static const SOUND_VELOCITY_THRESHOLD:Number = 2; public static const SOUND_VELOCITY_MULTIPLIER:Number = 0.1; override public function Add(_arg1:b2ContactPoint):void{ var _local3:Number; var _local4:String; var _local2:Number = _arg1.velocity.Length(); if ((((_local2 > SOUND_VELOCITY_THRESHOLD)) && ((Math.random() < 0.3)))){ _local3 = (_local2 * SOUND_VELOCITY_MULTIPLIER); if (_local3 > 1){ _local3 = 1; }; _local4 = SoundID.HIT_BLOCKS; Managers.soundManager.setSoundVolume(_local4, _local3); Managers.soundManager.playSound(_local4); }; } } }//package bblaster.core.game
Section 27
//GameWonController (bblaster.core.gameWon.GameWonController) package bblaster.core.gameWon { import bblaster.core.events.*; import flash.display.*; import flash.events.*; import bblaster.core.main.*; import bblaster.core.*; public class GameWonController extends EventDispatcher implements IController { private var _view:GameWonView; public function get view():DisplayObject{ return (_view); } public function initialize():void{ _view = new GameWonView(this); dispatchEvent(new ControllerEvent(ControllerEvent.READY)); } public function gotoMainMenu():void{ dispatchEvent(new ControllerEvent(ControllerEvent.COMPLETE, MainSignal.GOTO_MAIN_MENU)); } public function dispose():void{ _view.dispose(); _view = null; } } }//package bblaster.core.gameWon
Section 28
//GameWonView (bblaster.core.gameWon.GameWonView) package bblaster.core.gameWon { import flash.events.*; import com.bigwigmedia.ui.*; import bblaster.managers.*; import com.bigwigmedia.effects.*; import flash.text.*; import bblaster.core.game.*; import com.bigwigmedia.ui.containers.*; import com.bigwigmedia.ui.styles.*; import bblaster.ui.*; public class GameWonView extends LayoutContainer { private var submitScoreBtn:LabelButton; private var mainMenuBtn:LabelButton; private var twoDPlayBtn:IconicButton; private var viewScoresBtn:LabelButton; private var _controller:GameWonController; public function GameWonView(_arg1:GameWonController){ _controller = _arg1; setSize(640, 480); addChild(new GameWonViewBackground()); var _local2:Label = new Label(); _local2.text = "WELL DONE!"; _local2.setStyle(AbstractComponentStyle.TEXT_FORMAT, new TextFormat(Managers.fontManager.getFontNameByID("Font_1"), 36, 0xFFFFFF)); addChildToLayout(_local2, {horizontalCenter:0, top:70}); var _local3:Label = new Label(); _local3.text = ("FINAL SCORE: $" + String(GameInfo.totalScore)); addChildToLayout(_local3, {horizontalCenter:0, top:120}); submitScoreBtn = new GameButton(); submitScoreBtn.label = "SUBMIT SCORE"; submitScoreBtn.beacon = new ColorBeacon(0xFFCC00); addChildToLayout(submitScoreBtn, {right:20, bottom:90}); viewScoresBtn = new GameButton(); viewScoresBtn.label = "VIEW SCORES"; addChildToLayout(viewScoresBtn, {left:20, bottom:90}); mainMenuBtn = new GameButton(); mainMenuBtn.label = "MAIN MENU"; addChildToLayout(mainMenuBtn, {horizontalCenter:0, bottom:20}); twoDPlayBtn = new IconicButton(TwoDPlayButtonIcon); addChildToLayout(twoDPlayBtn, {left:5, top:5}); this.addEventListener(MouseEvent.CLICK, onMouseClickHandler); } private function onMouseClickHandler(_arg1:MouseEvent):void{ switch (_arg1.target){ case twoDPlayBtn: Managers.urlCaller.mainLink(); break; case viewScoresBtn: Managers.urlCaller.viewScores(); break; case submitScoreBtn: Managers.urlCaller.submitScore(GameInfo.totalScore); break; case mainMenuBtn: _controller.gotoMainMenu(); break; }; } override public function dispose():void{ this.removeEventListener(MouseEvent.CLICK, onMouseClickHandler); super.dispose(); } } }//package bblaster.core.gameWon
Section 29
//InstructionsController (bblaster.core.instructions.InstructionsController) package bblaster.core.instructions { import bblaster.core.events.*; import flash.display.*; import flash.events.*; import bblaster.core.main.*; import bblaster.core.*; public class InstructionsController extends EventDispatcher implements IController { private var _view:InstructionsView; public function get view():DisplayObject{ return (_view); } public function initialize():void{ _view = new InstructionsView(this); dispatchEvent(new ControllerEvent(ControllerEvent.READY)); } public function gotoMainMenu():void{ dispatchEvent(new ControllerEvent(ControllerEvent.COMPLETE, MainSignal.GOTO_MAIN_MENU)); } public function dispose():void{ _view.dispose(); _view = null; } } }//package bblaster.core.instructions
Section 30
//InstructionsView (bblaster.core.instructions.InstructionsView) package bblaster.core.instructions { import flash.events.*; import com.bigwigmedia.ui.*; import com.bigwigmedia.effects.*; import com.bigwigmedia.ui.containers.*; import bblaster.ui.*; public class InstructionsView extends LayoutContainer { private var mainMenuBtn:LabelButton; private var _controller:InstructionsController; public function InstructionsView(_arg1:InstructionsController){ _controller = _arg1; setSize(640, 480); addChild(new InstructionsViewBackground()); mainMenuBtn = new GameButton(); mainMenuBtn.label = "MAIN MENU"; mainMenuBtn.beacon = new ColorBeacon(0xFFCC00); addChildToLayout(mainMenuBtn, {right:20, bottom:20}); this.addEventListener(MouseEvent.CLICK, onMouseClickHandler); } override public function dispose():void{ this.removeEventListener(MouseEvent.CLICK, onMouseClickHandler); super.dispose(); } private function onMouseClickHandler(_arg1:MouseEvent):void{ switch (_arg1.target){ case mainMenuBtn: _controller.gotoMainMenu(); break; }; } } }//package bblaster.core.instructions
Section 31
//LevelButton (bblaster.core.levelSelection.LevelButton) package bblaster.core.levelSelection { import flash.display.*; import com.bigwigmedia.ui.*; import bblaster.managers.*; import flash.text.*; import com.bigwigmedia.ui.styles.*; import flash.filters.*; public class LevelButton extends LabelButton { private var _levelNum:int; private var lockedIcon:DisplayObject; private var backgroundIcon:DisplayObject; public static const WIDTH:Number = 50; public static const HEIGHT:Number = 46; public function LevelButton(_arg1:int){ _levelNum = _arg1; super(); this.setStyle(AbstractComponentStyle.TEXT_FORMAT, new TextFormat(Managers.fontManager.getFontNameByID("Font_1"), 24)); } public function set locked(_arg1:Boolean):void{ backgroundIcon.visible = !(_arg1); lockedIcon.visible = _arg1; _labelField.visible = !(_arg1); enabled = !(_arg1); } public function get levelNum():int{ return (_levelNum); } override protected function createChildren():void{ backgroundIcon = new LevelButtonIcon(); addChild(backgroundIcon); lockedIcon = new LevelButtonLockedIcon(); addChild(lockedIcon); _labelField = new TextField(); _labelField.type = TextFieldType.DYNAMIC; _labelField.selectable = false; _labelField.autoSize = TextFieldAutoSize.CENTER; _labelField.width = LevelButton.WIDTH; _labelField.x = ((LevelButton.WIDTH / 2) - 2); _labelField.y = 6; _labelField.filters = [new GlowFilter(0, 1, 4, 4, 3)]; addChild(_labelField); label = String((_levelNum + 1)); } } }//package bblaster.core.levelSelection
Section 32
//LevelSelectionController (bblaster.core.levelSelection.LevelSelectionController) package bblaster.core.levelSelection { import bblaster.core.events.*; import flash.display.*; import flash.events.*; import bblaster.core.game.*; import bblaster.core.main.*; import bblaster.core.*; public class LevelSelectionController extends EventDispatcher implements IController { private var _view:LevelSelectionView; public function gotoMainMenu():void{ dispatchEvent(new ControllerEvent(ControllerEvent.COMPLETE, MainSignal.GOTO_MAIN_MENU)); } public function get view():DisplayObject{ return (_view); } public function initialize():void{ _view = new LevelSelectionView(this); dispatchEvent(new ControllerEvent(ControllerEvent.READY)); } public function startGame(_arg1:int):void{ GameInfo.startGame(_arg1); dispatchEvent(new ControllerEvent(ControllerEvent.COMPLETE, MainSignal.START)); } public function dispose():void{ _view.dispose(); _view = null; } } }//package bblaster.core.levelSelection
Section 33
//LevelSelectionView (bblaster.core.levelSelection.LevelSelectionView) package bblaster.core.levelSelection { import flash.events.*; import com.bigwigmedia.ui.*; import bblaster.managers.*; import bblaster.core.game.*; import com.bigwigmedia.utils.*; import com.bigwigmedia.ui.containers.*; import bblaster.ui.*; public class LevelSelectionView extends LayoutContainer { private var mainMenuBtn:LabelButton; private var levelNameLabel:Label; private var resetBtn:LabelButton; private var levelButtonsList:Array; private var levelNameLabelState:String;// = "" private var levelScoreLabel:Label; private var totalScoreLabel:Label; private var _controller:LevelSelectionController; public function LevelSelectionView(_arg1:LevelSelectionController){ var _local7:LevelButton; var _local8:int; var _local9:int; levelButtonsList = []; super(); _controller = _arg1; setSize(640, 480); addChild(new LevelSelectionBackground()); var _local2:Label = new Label("SELECT LEVEL"); addChildToLayout(_local2, {horizontalCenter:0, top:10}); totalScoreLabel = new Label(); addChildToLayout(totalScoreLabel, {horizontalCenter:0, bottom:90}); levelScoreLabel = new Label(); addChildToLayout(levelScoreLabel, {horizontalCenter:0, bottom:120}); mainMenuBtn = new GameButton(); mainMenuBtn.label = "MAIN MENU"; addChildToLayout(mainMenuBtn, {right:20, bottom:20}); resetBtn = new GameButton(); resetBtn.label = "RESET GAME"; addChildToLayout(resetBtn, {left:20, bottom:20}); var _local3:Number = 6; var _local4 = 10; var _local5:int = Managers.configManager.totalLevels; var _local6:int; while (_local6 < _local5) { _local7 = new LevelButton(_local6); _local8 = (((_local6 % _local4) * (LevelButton.WIDTH + _local3)) + 50); _local9 = ((Math.floor((_local6 / _local4)) * (LevelButton.HEIGHT + _local3)) + 55); _local7.move(_local8, _local9); _local7.addEventListener(MouseEvent.MOUSE_OVER, onLevelBtnRollOverHandler); _local7.addEventListener(MouseEvent.MOUSE_OUT, onLevelBtnRollOutHandler); levelButtonsList.push(_local7); addChild(_local7); _local6++; }; levelNameLabel = new Label(); levelNameLabel.alpha = 0; addChild(levelNameLabel); showLevels(); this.addEventListener(MouseEvent.CLICK, onMouseClickHandler); this.addEventListener(MouseEvent.MOUSE_MOVE, onMouseMoveHandler); this.addEventListener(Event.ENTER_FRAME, onEnterFrameHandler); } private function positionLevelNameLabel():void{ var _local1:Number = (640 - levelNameLabel.width); levelNameLabel.move(Math.max(0, Math.min(_local1, (this.mouseX - (levelNameLabel.width / 2)))), (this.mouseY - levelNameLabel.height)); } private function onMouseClickHandler(_arg1:MouseEvent):void{ var _local2:EventDispatcher; var _local3:LevelButton; switch (_arg1.target){ case mainMenuBtn: _controller.gotoMainMenu(); break; case resetBtn: _local2 = addChild(new ResetGamePopup()); _local2.addEventListener(ResetGamePopupEvent.CLOSE, onResetGamePopupCloseHandler); break; default: _local3 = (_arg1.target as LevelButton); if (_local3){ _controller.startGame(_local3.levelNum); }; break; }; } private function onLevelBtnRollOutHandler(_arg1:MouseEvent):void{ levelNameLabelState = "fadeOut"; } private function onMouseMoveHandler(_arg1:MouseEvent):void{ if (levelNameLabel.alpha == 0){ return; }; positionLevelNameLabel(); } private function onResetGamePopupCloseHandler(_arg1:ResetGamePopupEvent):void{ var _local2:ResetGamePopup = (_arg1.target as ResetGamePopup); removeChild(_local2); _local2.removeEventListener(ResetGamePopupEvent.CLOSE, onResetGamePopupCloseHandler); _local2.dispose(); if (_arg1.doReset){ GameInfo.resetGame(); showLevels(); }; } override public function dispose():void{ this.removeEventListener(Event.ENTER_FRAME, onEnterFrameHandler); this.removeEventListener(MouseEvent.MOUSE_MOVE, onMouseMoveHandler); this.removeEventListener(MouseEvent.CLICK, onMouseClickHandler); levelButtonsList = []; super.dispose(); } private function onLevelBtnRollOverHandler(_arg1:MouseEvent):void{ var _local2:LevelButton = (_arg1.target as LevelButton); var _local3:int = _local2.levelNum; levelScoreLabel.text = ((String((_local3 + 1)) + " LEVEL BEST SCORE: $") + NumberFormatter.formatNumber(GameInfo.getBestLevelScore(_local3))); levelNameLabel.text = (("«" + Managers.configManager.getLevelName(_local3)) + "»"); positionLevelNameLabel(); levelNameLabelState = "fadeIn"; } private function onEnterFrameHandler(_arg1:Event):void{ var _local2:Number = levelNameLabel.alpha; if (levelNameLabelState == "fadeIn"){ _local2 = (_local2 + 0.1); if (_local2 > 1){ _local2 = 1; }; } else { if (levelNameLabelState == "fadeOut"){ _local2 = (_local2 - 0.1); if (_local2 < 0){ _local2 = 0; }; }; }; levelNameLabel.alpha = _local2; } private function showLevels():void{ var _local3:LevelButton; totalScoreLabel.text = ("TOTAL SCORE: $" + NumberFormatter.formatNumber(GameInfo.totalScore)); levelScoreLabel.text = ""; var _local1:int = Managers.configManager.totalLevels; var _local2:int; while (_local2 < _local1) { _local3 = levelButtonsList[_local2]; _local3.locked = (_local2 > GameInfo.levelReached); _local2++; }; } } }//package bblaster.core.levelSelection
Section 34
//ResetGamePopup (bblaster.core.levelSelection.ResetGamePopup) package bblaster.core.levelSelection { import flash.events.*; import com.bigwigmedia.ui.*; import bblaster.managers.*; import com.bigwigmedia.effects.*; import flash.text.*; import com.bigwigmedia.ui.containers.*; import com.bigwigmedia.ui.styles.*; public class ResetGamePopup extends LayoutContainer { private var okBtn:LabelButton; private var cancelBtn:LabelButton; public function ResetGamePopup(){ setSize(640, 480); addChild(new ResetGamePopupBackground()); var _local1:TextArea = new TextArea(); _local1.setSize(260, 100); _local1.setStyle(AbstractComponentStyle.TEXT_FORMAT, new TextFormat(Managers.fontManager.getFontNameByID("Font_1"), 24, 0xFFFFFF, null, null, null, null, null, "center")); _local1.text = "Reset Game Progress And Level Scores?"; addChildToLayout(_local1, {horizontalCenter:0, top:175}); okBtn = new LabelButton(); okBtn.label = "OK"; addChildToLayout(okBtn, {left:220, bottom:175}); cancelBtn = new LabelButton(); cancelBtn.label = "CANCEL"; cancelBtn.beacon = new ColorBeacon(0xFFCC00); addChildToLayout(cancelBtn, {right:220, bottom:175}); addEventListener(MouseEvent.CLICK, onMouseClickHandler); } private function onMouseClickHandler(_arg1:MouseEvent):void{ switch (_arg1.target){ case okBtn: dispatchEvent(new ResetGamePopupEvent(ResetGamePopupEvent.CLOSE, true)); break; case cancelBtn: dispatchEvent(new ResetGamePopupEvent(ResetGamePopupEvent.CLOSE, false)); break; }; } } }//package bblaster.core.levelSelection
Section 35
//ResetGamePopupEvent (bblaster.core.levelSelection.ResetGamePopupEvent) package bblaster.core.levelSelection { import flash.events.*; public class ResetGamePopupEvent extends Event { private var _doReset:Boolean; public static const CLOSE:String = "close"; public function ResetGamePopupEvent(_arg1:String, _arg2:Boolean){ super(_arg1); _doReset = _arg2; } override public function clone():Event{ return (new ResetGamePopupEvent(type, _doReset)); } public function get doReset():Boolean{ return (_doReset); } } }//package bblaster.core.levelSelection
Section 36
//MainController (bblaster.core.main.MainController) package bblaster.core.main { import com.bigwigmedia.stateMachine.*; import bblaster.core.events.*; import flash.display.*; import flash.events.*; import bblaster.managers.*; import bblaster.core.gameWon.*; import com.bigwigmedia.effects.*; import bblaster.core.instructions.*; import bblaster.core.mainMenu.*; import bblaster.core.levelSelection.*; import bblaster.core.game.*; import bblaster.core.*; import com.bigwigmedia.application.*; public class MainController extends EventDispatcher implements IController { private var hsm:HSM; private var _view:Sprite; private var subControllerClass:Class; private var subController:IController; private function onManagersInitCallback():void{ hsm = new HSM(); var _local1:AbstractState = hsm.addState(new InitialState()); var _local2:AbstractState = hsm.addState(new SimpleState(showMainMenu)); var _local3:AbstractState = hsm.addState(new SimpleState(showInstructions)); var _local4:AbstractState = hsm.addState(new SimpleState(showLevelSelection)); var _local5:AbstractState = hsm.addState(new SimpleState(showGame)); var _local6:AbstractState = hsm.addState(new ChoiceState()); var _local7:AbstractState = hsm.addState(new SimpleState(showGameWon)); _local1.addTransition(_local2); _local2.addTransition(_local3, new SignalTrigger(MainSignal.GOTO_INSTRUCTIONS)); _local3.addTransition(_local2, new SignalTrigger(MainSignal.GOTO_MAIN_MENU)); _local2.addTransition(_local4, new SignalTrigger(MainSignal.START)); _local4.addTransition(_local2, new SignalTrigger(MainSignal.GOTO_MAIN_MENU)); _local4.addTransition(_local5, new SignalTrigger(MainSignal.START)); _local5.addTransition(_local2, new SignalTrigger(MainSignal.GOTO_MAIN_MENU)); _local5.addTransition(_local4, new SignalTrigger(MainSignal.SELECT_LEVEL)); _local5.addTransition(_local6, new SignalTrigger(MainSignal.NEXT_LEVEL), toNextLevel); _local6.addTransition(_local7, null, null, isGameWon); _local6.addTransition(_local5, null, null); _local7.addTransition(_local2, new SignalTrigger(MainSignal.GOTO_MAIN_MENU)); hsm.start(); } private function showLevelSelection(_arg1:AbstractEvent):void{ beginTransitionEffect(LevelSelectionController); } private function showGameWon(_arg1:AbstractEvent):void{ beginTransitionEffect(GameWonController); } private function showInstructions(_arg1:AbstractEvent):void{ beginTransitionEffect(InstructionsController); } private function showGame(_arg1:AbstractEvent):void{ beginTransitionEffect(GameController); } public function initialize():void{ _view = new Sprite(); dispatchEvent(new ControllerEvent(ControllerEvent.READY)); Managers.initialize(onManagersInitCallback); } private function createNextController():void{ disposeCurrentController(); subController = new subControllerClass(); subController.addEventListener(ControllerEvent.READY, onControllerReadyHandler); subController.addEventListener(ControllerEvent.COMPLETE, onControllerCompleteHandler); subController.initialize(); } private function showMainMenu(_arg1:AbstractEvent):void{ beginTransitionEffect(MainMenuController); } private function toNextLevel(_arg1:AbstractEvent):void{ GameInfo.currentLevel++; } private function disposeCurrentController():void{ if (subController){ subController.removeEventListener(ControllerEvent.READY, onControllerReadyHandler); subController.removeEventListener(ControllerEvent.COMPLETE, onControllerCompleteHandler); _view.removeChild(subController.view); subController.dispose(); subController = null; }; } private function beginTransitionEffect(_arg1:Class):void{ this.subControllerClass = _arg1; var _local2:BlackoutOverlay = new BlackoutOverlay(createNextController); ApplicationGlobals.application.createOverlay(_local2); } public function dispose():void{ throw (new Error("Can't dispose MainController")); } private function onControllerReadyHandler(_arg1:ControllerEvent):void{ _view.addChild(subController.view); } public function get view():DisplayObject{ return (_view); } private function onControllerCompleteHandler(_arg1:ControllerEvent):void{ hsm.sendSignal(new SignalEvent((_arg1.data as String))); } private function isGameWon():Boolean{ return ((GameInfo.currentLevel == Managers.configManager.totalLevels)); } } }//package bblaster.core.main
Section 37
//MainSignal (bblaster.core.main.MainSignal) package bblaster.core.main { public class MainSignal { public static const GOTO_INSTRUCTIONS:String = "GOTO_INSTRUCTIONS"; public static const START:String = "START"; public static const SELECT_LEVEL:String = "SELECT_LEVEL"; public static const NEXT_LEVEL:String = "NEXT_LEVEL"; public static const GOTO_MAIN_MENU:String = "GOTO_MAIN_MENU"; } }//package bblaster.core.main
Section 38
//MainMenuController (bblaster.core.mainMenu.MainMenuController) package bblaster.core.mainMenu { import bblaster.core.events.*; import flash.display.*; import flash.events.*; import bblaster.core.main.*; import bblaster.core.*; public class MainMenuController extends EventDispatcher implements IController { private var _view:MainMenuView; public function showInstructions():void{ dispatchEvent(new ControllerEvent(ControllerEvent.COMPLETE, MainSignal.GOTO_INSTRUCTIONS)); } public function get view():DisplayObject{ return (_view); } public function initialize():void{ _view = new MainMenuView(this); dispatchEvent(new ControllerEvent(ControllerEvent.READY)); } public function startGame():void{ dispatchEvent(new ControllerEvent(ControllerEvent.COMPLETE, MainSignal.START)); } public function dispose():void{ _view.dispose(); _view = null; } } }//package bblaster.core.mainMenu
Section 39
//MainMenuView (bblaster.core.mainMenu.MainMenuView) package bblaster.core.mainMenu { import flash.events.*; import com.bigwigmedia.ui.*; import bblaster.managers.*; import com.bigwigmedia.effects.*; import flash.text.*; import com.bigwigmedia.ui.containers.*; import com.bigwigmedia.ui.styles.*; import bblaster.ui.*; public class MainMenuView extends LayoutContainer { private var twoDPlayBtn:IconicButton; private var viewScoresBtn:LabelButton; private var instructionsBtn:LabelButton; private var startBtn:LabelButton; private var _controller:MainMenuController; public function MainMenuView(_arg1:MainMenuController){ _controller = _arg1; setSize(640, 480); addChild(new MainMenuBackground()); var _local2:Label = new Label(); _local2.setStyle(AbstractComponentStyle.EMBED_FONTS, false); _local2.setStyle(AbstractComponentStyle.TEXT_FORMAT, new TextFormat("_sans", 12, 0xFFFFFF)); _local2.text = "©2DPlay.com"; addChildToLayout(_local2, {right:5, top:5}); startBtn = new GameButton(); startBtn.label = "PLAY GAME"; startBtn.beacon = new ColorBeacon(0xFFCC00); addChildToLayout(startBtn, {right:20, bottom:140}); instructionsBtn = new GameButton(); instructionsBtn.label = "INSTRUCTIONS"; addChildToLayout(instructionsBtn, {right:20, bottom:80}); viewScoresBtn = new GameButton(); viewScoresBtn.label = "VIEW SCORES"; addChildToLayout(viewScoresBtn, {right:20, bottom:20}); twoDPlayBtn = new IconicButton(TwoDPlayButtonIcon); addChildToLayout(twoDPlayBtn, {left:5, top:5}); this.addEventListener(MouseEvent.CLICK, onMouseClickHandler); } private function onMouseClickHandler(_arg1:MouseEvent):void{ switch (_arg1.target){ case twoDPlayBtn: Managers.urlCaller.mainLink(); break; case startBtn: _controller.startGame(); break; case viewScoresBtn: Managers.urlCaller.viewScores(); break; case instructionsBtn: _controller.showInstructions(); break; }; } override public function dispose():void{ this.removeEventListener(MouseEvent.CLICK, onMouseClickHandler); super.dispose(); } } }//package bblaster.core.mainMenu
Section 40
//IController (bblaster.core.IController) package bblaster.core { import flash.display.*; import flash.events.*; import com.bigwigmedia.core.*; public interface IController extends IEventDispatcher, IDisposable { function initialize():void; function get view():DisplayObject; } }//package bblaster.core
Section 41
//ConfigManager (bblaster.managers.ConfigManager) package bblaster.managers { import flash.events.*; public class ConfigManager extends EventDispatcher { private var configXMLClass:Class; private var _materialDensity_2:Number; private var _materialFriction_1:Number; private var _materialFriction_2:Number; private var goodResultPopups:Array; private var levelsXML:XML; private var badResultPopups:Array; private var levelsXMLClass:Class; private var _materialDensity_1:Number; private var configXML:XML; public function ConfigManager(){ configXMLClass = ConfigManager_configXMLClass; levelsXMLClass = ConfigManager_levelsXMLClass; badResultPopups = []; goodResultPopups = []; super(); } public function getLevelGoal(_arg1:int):int{ var _local2:XML = levelsXML.level[_arg1]; return (_local2.@goal); } public function getBombRadius(_arg1:int):Number{ var bombConfig:XMLList; var strength = _arg1; bombConfig = configXML.bombs_config.bomb.(@strength == strength); return (bombConfig.radius); } public function getBadResultPopups():Array{ return (badResultPopups); } public function get totalLevels():int{ return (levelsXML.level.length()); } public function get materialFriction_1():Number{ return (_materialFriction_1); } public function get materialDensity_2():Number{ return (_materialDensity_2); } private function prepareXML(_arg1:XML, _arg2:XML):void{ this.configXML = _arg1; this.levelsXML = _arg2; _materialFriction_1 = _arg1.blocks_material_1.friction; _materialDensity_1 = _arg1.blocks_material_1.density; _materialFriction_2 = _arg1.blocks_material_2.friction; _materialDensity_2 = _arg1.blocks_material_2.density; badResultPopups = String(_arg1.popups_bad).split(","); goodResultPopups = String(_arg1.popups_good).split(","); dispatchEvent(new Event(Event.INIT)); } public function getGoodResultPopups():Array{ return (goodResultPopups); } public function initialize():void{ if (!false){ prepareXML(XML(new configXMLClass()), XML(new levelsXMLClass())); }; } public function get saveBonus():int{ return (configXML.scoring.save_bonus); } public function get materialDensity_1():Number{ return (_materialDensity_1); } public function get penaltyMultiplier():int{ return (configXML.scoring.penalty_multiplayer); } public function get scoreMultiplier():int{ return (configXML.scoring.score_multiplayer); } public function getLevelConfig(_arg1:int):XML{ var _local2:XML = levelsXML.level[_arg1]; return (_local2); } public function getLevelName(_arg1:int):String{ var _local2:XML = levelsXML.level[_arg1]; return (_local2.@name); } public function get materialFriction_2():Number{ return (_materialFriction_2); } public function getLevelMaxScore(_arg1:int):int{ var _local2:XML = levelsXML.level[_arg1]; return (_local2.@maxScore); } public function getBombImpulse(_arg1:int):Number{ var bombConfig:XMLList; var strength = _arg1; bombConfig = configXML.bombs_config.bomb.(@strength == strength); return (bombConfig.impulse); } } }//package bblaster.managers
Section 42
//ConfigManager_configXMLClass (bblaster.managers.ConfigManager_configXMLClass) package bblaster.managers { import mx.core.*; public class ConfigManager_configXMLClass extends ByteArrayAsset { } }//package bblaster.managers
Section 43
//ConfigManager_levelsXMLClass (bblaster.managers.ConfigManager_levelsXMLClass) package bblaster.managers { import mx.core.*; public class ConfigManager_levelsXMLClass extends ByteArrayAsset { } }//package bblaster.managers
Section 44
//Managers (bblaster.managers.Managers) package bblaster.managers { import flash.events.*; import com.bigwigmedia.ui.*; import com.bigwigmedia.font.*; import com.bigwigmedia.sound.*; import com.bigwigmedia.net.*; import com.boostworthy.utils.logger.*; import flash.text.*; import com.bigwigmedia.core.*; import com.bigwigmedia.ui.styles.*; import com.boostworthy.core.*; import com.bigwigmedia.display.*; import bblaster.sound.*; import com.bigwigmedia.application.*; import flash.filters.*; public class Managers { private static var _soundManager:ISoundManager; private static var _configManager:ConfigManager; private static var initialized:Boolean = false; private static var _urlCaller:IURLCaller; private static var _fontManager:IFontManager; private static var _styleManager:IStyleManager; private static var _soManager:ISOManager; private static var onInitCallback:Function; private static var _cursorManager:ICursorManager; private static function onButtonMouseOverHandler(_arg1:AbstractButton):void{ _soundManager.playSound(SoundID.CLICK_3); } public static function get configManager():ConfigManager{ return (_configManager); } public static function initialize(_arg1:Function):void{ if (initialized){ return; }; initialized = true; Managers.onInitCallback = _arg1; Global.stage = ApplicationGlobals.application.stage; LogFactory.getInstance().getLog("Boostworthy Animation System").setLevel(0); Singleton.registerClass("com.bigwigmedia.font::IFontManager", FontManager); _fontManager = IFontManager(Singleton.getInstance("com.bigwigmedia.font::IFontManager")); Singleton.registerClass("com.bigwigmedia.ui::ICursorManager", CursorManager); _cursorManager = ICursorManager(Singleton.getInstance("com.bigwigmedia.ui::ICursorManager")); Singleton.registerClass("com.bigwigmedia.sound::ISoundManager", SoundManager); _soundManager = ISoundManager(Singleton.getInstance("com.bigwigmedia.sound::ISoundManager")); Singleton.registerClass("com.bigwigmedia.ui::IStyleManager", StyleManager); _styleManager = IStyleManager(Singleton.getInstance("com.bigwigmedia.ui::IStyleManager")); Singleton.registerClass("com.bigwigmedia.net::ISOManager", SOManager); _soManager = ISOManager(Singleton.getInstance("com.bigwigmedia.net::ISOManager")); Singleton.registerClass("com.bigwigmedia.net::IURLCaller", URLCaller_2DPlay); _urlCaller = IURLCaller(Singleton.getInstance("com.bigwigmedia.net::IURLCaller")); if (_soManager.dataEmpty){ _soManager.setValue("soundEnabled", true); _soManager.setValue("showHints", true); _soManager.setValue("levelReached", 0); }; _fontManager.registerFonts("Font_1"); _styleManager.setSharedStyle(AbstractComponent, AbstractComponentStyle.TEXT_FORMAT, new TextFormat(_fontManager.getFontNameByID("Font_1"), 24, 0xFFFFFF)); _styleManager.setSharedStyle(AbstractComponent, AbstractComponentStyle.EMBED_FONTS, true); _styleManager.setSharedStyle(LabelButton, AbstractComponentStyle.DECORATION, new FilterDecoration(new GlowFilter(0, 1, 4, 4, 5), new DropShadowFilter(2, 45, 0, 0.5))); _styleManager.setSharedStyle(Label, AbstractComponentStyle.DECORATION, new FilterDecoration(new GlowFilter(0, 1, 4, 4, 5), new DropShadowFilter(2, 45, 0, 0.5))); _styleManager.setSharedStyle(TextArea, AbstractComponentStyle.DECORATION, new FilterDecoration(new GlowFilter(0, 1, 4, 4, 5), new DropShadowFilter(2, 45, 0, 0.5))); _styleManager.setSharedStyle(IconicButton, IconicButtonStyle.UP_DECORATION, new TintDecoration(0xFFFFFF, 0)); _styleManager.setSharedStyle(IconicButton, IconicButtonStyle.OVER_DECORATION, new TintDecoration(0xFFFFFF, 0.3)); _styleManager.setSharedStyle(LabelButton, LabelButtonStyle.UP_STATE_COLOR, 0xFFFFFF); _styleManager.setSharedStyle(LabelButton, LabelButtonStyle.OVER_STATE_COLOR, 0xFFCC00); _styleManager.setSharedStyle(LabelButton, LabelButtonStyle.DOWN_STATE_COLOR, 0xFFCC00); _styleManager.setSharedStyle(AbstractButton, AbstractButtonStyle.MOUSE_DOWN_HANDLER, Managers.onButtonMouseDownHandler); _styleManager.setSharedStyle(AbstractButton, AbstractButtonStyle.ROLL_OVER_HANDLER, Managers.onButtonMouseOverHandler); var _local2:Array = ["sfx"]; _soundManager.registerSoundRecord(SoundID.CLICK_1, click_1, _local2); _soundManager.registerSoundRecord(SoundID.CLICK_2, click_2, _local2); _soundManager.registerSoundRecord(SoundID.CLICK_3, BUTTON_UI, _local2); _soundManager.registerSoundRecord(SoundID.MASTER_BLASTER_EFFECT, TRUMPET_BLAST, _local2); _soundManager.registerSoundRecord(SoundID.ABSOLUTE_ZERO, GLASS_THROWN, _local2); _soundManager.registerSoundRecord(SoundID.OTHER_RESULT, DRM_ROLL_CRASH, _local2); _soundManager.registerSoundRecord("explosion_0", explosion_0, _local2); _soundManager.registerSoundRecord("explosion_1", explosion_1, _local2); _soundManager.registerSoundRecord("explosion_2", explosion_2, _local2); _soundManager.registerSoundRecord("explosion_3", explosion_3, _local2); _soundManager.registerSoundRecord("hit_0", hit_0, _local2); _soundManager.registerSoundRecord("hit_1", hit_1, _local2); _soundManager.registerSoundRecord("hit_2", hit_2, _local2); _soundManager.registerSoundRecord("hit_3", hit_3, _local2); _soundManager.registerSoundRecord("hit_4", hit_4, _local2); _soundManager.registerSoundRecord("hit_5", hit_5, _local2); _soundManager.registerSoundRecord("hit_6", hit_6, _local2); _soundManager.registerSoundRecord("hit_7", hit_7, _local2); _soundManager.registerSoundRecord("hit_8", hit_8, _local2); _soundManager.registerSoundRecord("hit_9", hit_9, _local2); var _local3:Boolean = (_soManager.getValue("soundEnabled") as Boolean); _soundManager.setChannelsVolume((_local3) ? 1 : 0); _configManager = new ConfigManager(); _configManager.addEventListener(Event.INIT, Managers.onConfigManCompleteHandler); _configManager.initialize(); } public static function get urlCaller():IURLCaller{ return (_urlCaller); } public static function get fontManager():IFontManager{ return (_fontManager); } public static function get soundManager():ISoundManager{ return (_soundManager); } public static function get soManager():ISOManager{ return (_soManager); } private static function onButtonMouseDownHandler(_arg1:AbstractButton):void{ _soundManager.playSound(SoundID.CLICK_2); } public static function get cursorManager():ICursorManager{ return (_cursorManager); } private static function onConfigManCompleteHandler(_arg1:Event):void{ _configManager.removeEventListener(Event.INIT, Managers.onConfigManCompleteHandler); Managers.onInitCallback(); Managers.onInitCallback = null; } public static function get styleManager():IStyleManager{ return (_styleManager); } } }//package bblaster.managers
Section 45
//SoundID (bblaster.sound.SoundID) package bblaster.sound { import com.bigwigmedia.utils.*; public class SoundID { public static const MASTER_BLASTER_EFFECT:String = "MASTER_BLASTER_EFFECT"; public static const OTHER_RESULT:String = "OTHER_RESULT"; public static const ABSOLUTE_ZERO:String = "ABSOLUTE_ZERO"; public static const CLICK_1:String = "CLICK_1"; public static const CLICK_2:String = "CLICK_2"; public static const CLICK_3:String = "CLICK_3"; private static var prevExplosionRand:int = -1; private static var prevHitIndex:int = 0; private static var hitSoundSequence:Array; public static function reinitializeHitSounds():void{ if (!hitSoundSequence){ hitSoundSequence = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]; }; hitSoundSequence = ArrayUtil.shuffle(hitSoundSequence); } public static function get EXPLOSION():String{ var _local1:int = (Math.random() * 4); while (true) { _local1 = (Math.random() * 4); if (_local1 != prevExplosionRand){ prevExplosionRand = _local1; break; }; }; var _local2:String = ("explosion_" + String(_local1)); return (_local2); } public static function get HIT_BLOCKS():String{ var _local1:String = ("hit_" + hitSoundSequence[prevHitIndex++]); if (prevHitIndex == 10){ prevHitIndex = 0; }; return (_local1); } } }//package bblaster.sound
Section 46
//GameButton (bblaster.ui.GameButton) package bblaster.ui { import flash.display.*; import com.bigwigmedia.ui.*; import flash.text.*; public class GameButton extends LabelButton { private static const WIDTH:Number = 262; override public function set label(_arg1:String):void{ super.label = _arg1; _labelField.x = ((GameButton.WIDTH - _labelField.width) / 2); } override protected function createChildren():void{ var _local1:Sprite = new ButtonBackground(); addChild(_local1); _labelField = new TextField(); _labelField.type = TextFieldType.DYNAMIC; _labelField.selectable = false; _labelField.autoSize = TextFieldAutoSize.CENTER; _labelField.y = 11; addChild(_labelField); } } }//package bblaster.ui
Section 47
//Main (bblaster.Main) package bblaster { import com.bigwigmedia.application.*; import com.bigwigmedia.preloaders.*; import com.bigwigmedia.events.*; import bblaster.core.events.*; import bblaster.core.*; import com.bigwigmedia.ui.*; public class Main extends AbstractApplication_2DPLay { private var mainController:IController; public static const VERSION:String = "1.0.0.1215"; public function Main(){ super("Building Blaster", "1744", VERSION, "com.bigwigmedia.building_blaster"); addEventListener(ApplicationEvent.INIT, onAppInitHandler); addEventListener(ApplicationEvent.READY, onAppReadyHandler); } private function onAppInitHandler(_arg1:ApplicationEvent):void{ this.contextMenu = ContextMenu_2DPlay.getMenu(); createMask(); startPreloading(new Preloader_2DPlay(true)); } private function onAppReadyHandler(_arg1:ApplicationEvent):void{ fillBackground(); removeChild(_preloader); _preloader = null; removeEventListener(ApplicationEvent.INIT, onAppInitHandler); removeEventListener(ApplicationEvent.READY, onAppReadyHandler); Console.initialize([67, 79, 78, 83, 79, 76, 69]); var _local2:Class = getClassByName("bblaster.core.main.MainController"); mainController = new (_local2); mainController.addEventListener(ControllerEvent.READY, onControllerReadyHandler); mainController.initialize(); } private function onControllerReadyHandler(_arg1:ControllerEvent):void{ mainController.removeEventListener(ControllerEvent.READY, onControllerReadyHandler); createMainView(mainController.view); } } }//package bblaster
Section 48
//b2CircleDef (Box2D.Collision.Shapes.b2CircleDef) package Box2D.Collision.Shapes { import Box2D.Common.Math.*; public class b2CircleDef extends b2ShapeDef { public var radius:Number; public var localPosition:b2Vec2; public function b2CircleDef(){ localPosition = new b2Vec2(0, 0); super(); type = b2Shape.e_circleShape; radius = 1; } } }//package Box2D.Collision.Shapes
Section 49
//b2CircleShape (Box2D.Collision.Shapes.b2CircleShape) package Box2D.Collision.Shapes { import Box2D.Collision.*; import Box2D.Common.Math.*; import Box2D.Dynamics.*; import Box2D.Common.*; public class b2CircleShape extends b2Shape { public var m_localPosition:b2Vec2; public var m_radius:Number; public function b2CircleShape(_arg1:b2ShapeDef){ m_localPosition = new b2Vec2(); super(_arg1); var _local2:b2CircleDef = (_arg1 as b2CircleDef); m_type = e_circleShape; m_localPosition.SetV(_local2.localPosition); m_radius = _local2.radius; } override public function TestSegment(_arg1:b2XForm, _arg2:Array, _arg3:b2Vec2, _arg4:b2Segment, _arg5:Number):Boolean{ var _local10:Number; var _local6:b2Mat22 = _arg1.R; var _local7:Number = (_arg1.position.x + ((_local6.col1.x * m_localPosition.x) + (_local6.col2.x * m_localPosition.y))); var _local8:Number = (_arg1.position.y + ((_local6.col1.y * m_localPosition.x) + (_local6.col2.y * m_localPosition.y))); var _local9:Number = (_arg4.p1.x - _local7); _local10 = (_arg4.p1.y - _local8); var _local11:Number = (((_local9 * _local9) + (_local10 * _local10)) - (m_radius * m_radius)); if (_local11 < 0){ return (false); }; var _local12:Number = (_arg4.p2.x - _arg4.p1.x); var _local13:Number = (_arg4.p2.y - _arg4.p1.y); var _local14:Number = ((_local9 * _local12) + (_local10 * _local13)); var _local15:Number = ((_local12 * _local12) + (_local13 * _local13)); var _local16:Number = ((_local14 * _local14) - (_local15 * _local11)); if ((((_local16 < 0)) || ((_local15 < Number.MIN_VALUE)))){ return (false); }; var _local17:Number = -((_local14 + Math.sqrt(_local16))); if ((((0 <= _local17)) && ((_local17 <= (_arg5 * _local15))))){ _local17 = (_local17 / _local15); _arg2[0] = _local17; _arg3.x = (_local9 + (_local17 * _local12)); _arg3.y = (_local10 + (_local17 * _local13)); _arg3.Normalize(); return (true); }; return (false); } public function GetLocalPosition():b2Vec2{ return (m_localPosition); } public function GetRadius():Number{ return (m_radius); } override public function ComputeSweptAABB(_arg1:b2AABB, _arg2:b2XForm, _arg3:b2XForm):void{ var _local4:b2Mat22; _local4 = _arg2.R; var _local5:Number = (_arg2.position.x + ((_local4.col1.x * m_localPosition.x) + (_local4.col2.x * m_localPosition.y))); var _local6:Number = (_arg2.position.y + ((_local4.col1.y * m_localPosition.x) + (_local4.col2.y * m_localPosition.y))); _local4 = _arg3.R; var _local7:Number = (_arg3.position.x + ((_local4.col1.x * m_localPosition.x) + (_local4.col2.x * m_localPosition.y))); var _local8:Number = (_arg3.position.y + ((_local4.col1.y * m_localPosition.x) + (_local4.col2.y * m_localPosition.y))); _arg1.lowerBound.Set((((_local5 < _local7)) ? _local5 : _local7 - m_radius), (((_local6 < _local8)) ? _local6 : _local8 - m_radius)); _arg1.upperBound.Set((((_local5 > _local7)) ? _local5 : _local7 + m_radius), (((_local6 > _local8)) ? _local6 : _local8 + m_radius)); } override public function ComputeMass(_arg1:b2MassData):void{ _arg1.mass = (((m_density * b2Settings.b2_pi) * m_radius) * m_radius); _arg1.center.SetV(m_localPosition); _arg1.I = (_arg1.mass * (((0.5 * m_radius) * m_radius) + ((m_localPosition.x * m_localPosition.x) + (m_localPosition.y * m_localPosition.y)))); } override public function UpdateSweepRadius(_arg1:b2Vec2):void{ var _local2:Number = (m_localPosition.x - _arg1.x); var _local3:Number = (m_localPosition.y - _arg1.y); _local2 = Math.sqrt(((_local2 * _local2) + (_local3 * _local3))); m_sweepRadius = ((_local2 + m_radius) - b2Settings.b2_toiSlop); } override public function ComputeAABB(_arg1:b2AABB, _arg2:b2XForm):void{ var _local3:b2Mat22 = _arg2.R; var _local4:Number = (_arg2.position.x + ((_local3.col1.x * m_localPosition.x) + (_local3.col2.x * m_localPosition.y))); var _local5:Number = (_arg2.position.y + ((_local3.col1.y * m_localPosition.x) + (_local3.col2.y * m_localPosition.y))); _arg1.lowerBound.Set((_local4 - m_radius), (_local5 - m_radius)); _arg1.upperBound.Set((_local4 + m_radius), (_local5 + m_radius)); } override public function TestPoint(_arg1:b2XForm, _arg2:b2Vec2):Boolean{ var _local3:b2Mat22 = _arg1.R; var _local4:Number = (_arg1.position.x + ((_local3.col1.x * m_localPosition.x) + (_local3.col2.x * m_localPosition.y))); var _local5:Number = (_arg1.position.y + ((_local3.col1.y * m_localPosition.x) + (_local3.col2.y * m_localPosition.y))); _local4 = (_arg2.x - _local4); _local5 = (_arg2.y - _local5); return ((((_local4 * _local4) + (_local5 * _local5)) <= (m_radius * m_radius))); } } }//package Box2D.Collision.Shapes
Section 50
//b2FilterData (Box2D.Collision.Shapes.b2FilterData) package Box2D.Collision.Shapes { public class b2FilterData { public var maskBits:uint;// = 0xFFFF public var groupIndex:int;// = 0 public var categoryBits:uint;// = 1 public function Copy():b2FilterData{ var _local1:b2FilterData = new b2FilterData(); _local1.categoryBits = categoryBits; _local1.maskBits = maskBits; _local1.groupIndex = groupIndex; return (_local1); } } }//package Box2D.Collision.Shapes
Section 51
//b2MassData (Box2D.Collision.Shapes.b2MassData) package Box2D.Collision.Shapes { import Box2D.Common.Math.*; public class b2MassData { public var mass:Number;// = 0 public var center:b2Vec2; public var I:Number;// = 0 public function b2MassData(){ center = new b2Vec2(0, 0); super(); } } }//package Box2D.Collision.Shapes
Section 52
//b2PolygonDef (Box2D.Collision.Shapes.b2PolygonDef) package Box2D.Collision.Shapes { import Box2D.Common.Math.*; import Box2D.Common.*; public class b2PolygonDef extends b2ShapeDef { public var vertices:Array; public var vertexCount:int; private static var s_mat:b2Mat22 = new b2Mat22(); public function b2PolygonDef(){ vertices = new Array(b2Settings.b2_maxPolygonVertices); super(); type = b2Shape.e_polygonShape; vertexCount = 0; var _local1:int; while (_local1 < b2Settings.b2_maxPolygonVertices) { vertices[_local1] = new b2Vec2(); _local1++; }; } public function SetAsOrientedBox(_arg1:Number, _arg2:Number, _arg3:b2Vec2=null, _arg4:Number=0):void{ var _local5:b2Vec2; var _local6:b2Mat22; var _local7:int; vertexCount = 4; vertices[0].Set(-(_arg1), -(_arg2)); vertices[1].Set(_arg1, -(_arg2)); vertices[2].Set(_arg1, _arg2); vertices[3].Set(-(_arg1), _arg2); if (_arg3){ _local5 = _arg3; _local6 = s_mat; _local6.Set(_arg4); _local7 = 0; while (_local7 < vertexCount) { _arg3 = vertices[_local7]; _arg1 = (_local5.x + ((_local6.col1.x * _arg3.x) + (_local6.col2.x * _arg3.y))); _arg3.y = (_local5.y + ((_local6.col1.y * _arg3.x) + (_local6.col2.y * _arg3.y))); _arg3.x = _arg1; _local7++; }; }; } public function SetAsBox(_arg1:Number, _arg2:Number):void{ vertexCount = 4; vertices[0].Set(-(_arg1), -(_arg2)); vertices[1].Set(_arg1, -(_arg2)); vertices[2].Set(_arg1, _arg2); vertices[3].Set(-(_arg1), _arg2); } } }//package Box2D.Collision.Shapes
Section 53
//b2PolygonShape (Box2D.Collision.Shapes.b2PolygonShape) package Box2D.Collision.Shapes { import Box2D.Collision.*; import Box2D.Common.Math.*; import Box2D.Dynamics.*; import Box2D.Common.*; public class b2PolygonShape extends b2Shape { public var m_coreVertices:Array; public var m_vertices:Array; private var s_supportVec:b2Vec2; public var m_centroid:b2Vec2; public var m_normals:Array; public var m_obb:b2OBB; public var m_vertexCount:int; private static var s_computeMat:b2Mat22 = new b2Mat22(); private static var s_sweptAABB1:b2AABB = new b2AABB(); private static var s_sweptAABB2:b2AABB = new b2AABB(); public function b2PolygonShape(_arg1:b2ShapeDef){ var _local3:int; var _local6:Number; var _local7:Number; var _local8:Number; var _local9:Number; var _local10:Number; var _local11:Number; var _local12:Number; var _local13:Number; var _local14:Number; var _local15:Number; var _local16:Number; var _local17:Number; s_supportVec = new b2Vec2(); m_obb = new b2OBB(); m_vertices = new Array(b2Settings.b2_maxPolygonVertices); m_normals = new Array(b2Settings.b2_maxPolygonVertices); m_coreVertices = new Array(b2Settings.b2_maxPolygonVertices); super(_arg1); m_type = e_polygonShape; var _local2:b2PolygonDef = (_arg1 as b2PolygonDef); m_vertexCount = _local2.vertexCount; var _local4:int = _local3; var _local5:int = _local3; _local3 = 0; while (_local3 < m_vertexCount) { m_vertices[_local3] = _local2.vertices[_local3].Copy(); _local3++; }; _local3 = 0; while (_local3 < m_vertexCount) { _local4 = _local3; _local5 = (((_local3 + 1) < m_vertexCount)) ? (_local3 + 1) : 0; _local6 = (m_vertices[_local5].x - m_vertices[_local4].x); _local7 = (m_vertices[_local5].y - m_vertices[_local4].y); _local8 = Math.sqrt(((_local6 * _local6) + (_local7 * _local7))); m_normals[_local3] = new b2Vec2((_local7 / _local8), (-(_local6) / _local8)); _local3++; }; m_centroid = ComputeCentroid(_local2.vertices, _local2.vertexCount); ComputeOBB(m_obb, m_vertices, m_vertexCount); _local3 = 0; while (_local3 < m_vertexCount) { _local4 = (((_local3 - 1) >= 0)) ? (_local3 - 1) : (m_vertexCount - 1); _local5 = _local3; _local9 = m_normals[_local4].x; _local10 = m_normals[_local4].y; _local11 = m_normals[_local5].x; _local12 = m_normals[_local5].y; _local13 = (m_vertices[_local3].x - m_centroid.x); _local14 = (m_vertices[_local3].y - m_centroid.y); _local15 = (((_local9 * _local13) + (_local10 * _local14)) - b2Settings.b2_toiSlop); _local16 = (((_local11 * _local13) + (_local12 * _local14)) - b2Settings.b2_toiSlop); _local17 = (1 / ((_local9 * _local12) - (_local10 * _local11))); m_coreVertices[_local3] = new b2Vec2(((_local17 * ((_local12 * _local15) - (_local10 * _local16))) + m_centroid.x), ((_local17 * ((_local9 * _local16) - (_local11 * _local15))) + m_centroid.y)); _local3++; }; } override public function ComputeSweptAABB(_arg1:b2AABB, _arg2:b2XForm, _arg3:b2XForm):void{ var _local4:b2AABB = s_sweptAABB1; var _local5:b2AABB = s_sweptAABB2; ComputeAABB(_local4, _arg2); ComputeAABB(_local5, _arg3); _arg1.lowerBound.Set(((_local4.lowerBound.x < _local5.lowerBound.x)) ? _local4.lowerBound.x : _local5.lowerBound.x, ((_local4.lowerBound.y < _local5.lowerBound.y)) ? _local4.lowerBound.y : _local5.lowerBound.y); _arg1.upperBound.Set(((_local4.upperBound.x > _local5.upperBound.x)) ? _local4.upperBound.x : _local5.upperBound.x, ((_local4.upperBound.y > _local5.upperBound.y)) ? _local4.upperBound.y : _local5.upperBound.y); } public function GetVertices():Array{ return (m_vertices); } public function GetCoreVertices():Array{ return (m_coreVertices); } public function GetCentroid():b2Vec2{ return (m_centroid); } public function GetOBB():b2OBB{ return (m_obb); } public function GetFirstVertex(_arg1:b2XForm):b2Vec2{ return (b2Math.b2MulX(_arg1, m_coreVertices[0])); } public function Centroid(_arg1:b2XForm):b2Vec2{ return (b2Math.b2MulX(_arg1, m_centroid)); } override public function TestSegment(_arg1:b2XForm, _arg2:Array, _arg3:b2Vec2, _arg4:b2Segment, _arg5:Number):Boolean{ var _local8:Number; var _local9:Number; var _local10:b2Mat22; var _local11:b2Vec2; var _local20:Number; var _local21:Number; var _local6:Number = 0; var _local7:Number = _arg5; _local8 = (_arg4.p1.x - _arg1.position.x); _local9 = (_arg4.p1.y - _arg1.position.y); _local10 = _arg1.R; var _local12:Number = ((_local8 * _local10.col1.x) + (_local9 * _local10.col1.y)); var _local13:Number = ((_local8 * _local10.col2.x) + (_local9 * _local10.col2.y)); _local8 = (_arg4.p2.x - _arg1.position.x); _local9 = (_arg4.p2.y - _arg1.position.y); _local10 = _arg1.R; var _local14:Number = ((_local8 * _local10.col1.x) + (_local9 * _local10.col1.y)); var _local15:Number = ((_local8 * _local10.col2.x) + (_local9 * _local10.col2.y)); var _local16:Number = (_local14 - _local12); var _local17:Number = (_local15 - _local13); var _local18 = -1; var _local19:int; while (_local19 < m_vertexCount) { _local11 = m_vertices[_local19]; _local8 = (_local11.x - _local12); _local9 = (_local11.y - _local13); _local11 = m_normals[_local19]; _local20 = ((_local11.x * _local8) + (_local11.y * _local9)); _local21 = ((_local11.x * _local16) + (_local11.y * _local17)); if ((((_local21 < 0)) && ((_local20 < (_local6 * _local21))))){ _local6 = (_local20 / _local21); _local18 = _local19; } else { if ((((_local21 > 0)) && ((_local20 < (_local7 * _local21))))){ _local7 = (_local20 / _local21); }; }; if (_local7 < _local6){ return (false); }; _local19++; }; if (_local18 >= 0){ _arg2[0] = _local6; _local10 = _arg1.R; _local11 = m_normals[_local18]; _arg3.x = ((_local10.col1.x * _local11.x) + (_local10.col2.x * _local11.y)); _arg3.y = ((_local10.col1.y * _local11.x) + (_local10.col2.y * _local11.y)); return (true); }; return (false); } override public function ComputeMass(_arg1:b2MassData):void{ var _local10:b2Vec2; var _local11:b2Vec2; var _local12:Number; var _local13:Number; var _local14:Number; var _local15:Number; var _local16:Number; var _local17:Number; var _local18:Number; var _local19:Number; var _local20:Number; var _local21:Number; var _local22:Number; var _local23:Number; var _local24:Number; var _local25:Number; var _local2:Number = 0; var _local3:Number = 0; var _local4:Number = 0; var _local5:Number = 0; var _local6:Number = 0; var _local7:Number = 0; var _local8:Number = (1 / 3); var _local9:int; while (_local9 < m_vertexCount) { _local10 = m_vertices[_local9]; _local11 = (((_local9 + 1) < m_vertexCount)) ? m_vertices[int((_local9 + 1))] : m_vertices[0]; _local12 = (_local10.x - _local6); _local13 = (_local10.y - _local7); _local14 = (_local11.x - _local6); _local15 = (_local11.y - _local7); _local16 = ((_local12 * _local15) - (_local13 * _local14)); _local17 = (0.5 * _local16); _local4 = (_local4 + _local17); _local2 = (_local2 + ((_local17 * _local8) * ((_local6 + _local10.x) + _local11.x))); _local3 = (_local3 + ((_local17 * _local8) * ((_local7 + _local10.y) + _local11.y))); _local18 = _local6; _local19 = _local7; _local20 = _local12; _local21 = _local13; _local22 = _local14; _local23 = _local15; _local24 = ((_local8 * ((0.25 * (((_local20 * _local20) + (_local22 * _local20)) + (_local22 * _local22))) + ((_local18 * _local20) + (_local18 * _local22)))) + ((0.5 * _local18) * _local18)); _local25 = ((_local8 * ((0.25 * (((_local21 * _local21) + (_local23 * _local21)) + (_local23 * _local23))) + ((_local19 * _local21) + (_local19 * _local23)))) + ((0.5 * _local19) * _local19)); _local5 = (_local5 + (_local16 * (_local24 + _local25))); _local9++; }; _arg1.mass = (m_density * _local4); _local2 = (_local2 * (1 / _local4)); _local3 = (_local3 * (1 / _local4)); _arg1.center.Set(_local2, _local3); _arg1.I = (m_density * _local5); } public function GetNormals():Array{ return (m_normals); } public function Support(_arg1:b2XForm, _arg2:Number, _arg3:Number):b2Vec2{ var _local4:b2Vec2; var _local5:b2Mat22; var _local11:Number; _local5 = _arg1.R; var _local6:Number = ((_arg2 * _local5.col1.x) + (_arg3 * _local5.col1.y)); var _local7:Number = ((_arg2 * _local5.col2.x) + (_arg3 * _local5.col2.y)); var _local8:int; _local4 = m_coreVertices[0]; var _local9:Number = ((_local4.x * _local6) + (_local4.y * _local7)); var _local10 = 1; while (_local10 < m_vertexCount) { _local4 = m_coreVertices[_local10]; _local11 = ((_local4.x * _local6) + (_local4.y * _local7)); if (_local11 > _local9){ _local8 = _local10; _local9 = _local11; }; _local10++; }; _local5 = _arg1.R; _local4 = m_coreVertices[_local8]; s_supportVec.x = (_arg1.position.x + ((_local5.col1.x * _local4.x) + (_local5.col2.x * _local4.y))); s_supportVec.y = (_arg1.position.y + ((_local5.col1.y * _local4.x) + (_local5.col2.y * _local4.y))); return (s_supportVec); } public function GetVertexCount():int{ return (m_vertexCount); } override public function ComputeAABB(_arg1:b2AABB, _arg2:b2XForm):void{ var _local3:b2Mat22; var _local4:b2Vec2; var _local5:b2Mat22 = s_computeMat; _local3 = _arg2.R; _local4 = m_obb.R.col1; _local5.col1.x = ((_local3.col1.x * _local4.x) + (_local3.col2.x * _local4.y)); _local5.col1.y = ((_local3.col1.y * _local4.x) + (_local3.col2.y * _local4.y)); _local4 = m_obb.R.col2; _local5.col2.x = ((_local3.col1.x * _local4.x) + (_local3.col2.x * _local4.y)); _local5.col2.y = ((_local3.col1.y * _local4.x) + (_local3.col2.y * _local4.y)); _local5.Abs(); var _local6:b2Mat22 = _local5; _local4 = m_obb.extents; var _local7:Number = ((_local6.col1.x * _local4.x) + (_local6.col2.x * _local4.y)); var _local8:Number = ((_local6.col1.y * _local4.x) + (_local6.col2.y * _local4.y)); _local3 = _arg2.R; _local4 = m_obb.center; var _local9:Number = (_arg2.position.x + ((_local3.col1.x * _local4.x) + (_local3.col2.x * _local4.y))); var _local10:Number = (_arg2.position.y + ((_local3.col1.y * _local4.x) + (_local3.col2.y * _local4.y))); _arg1.lowerBound.Set((_local9 - _local7), (_local10 - _local8)); _arg1.upperBound.Set((_local9 + _local7), (_local10 + _local8)); } override public function UpdateSweepRadius(_arg1:b2Vec2):void{ var _local2:b2Vec2; var _local4:Number; var _local5:Number; m_sweepRadius = 0; var _local3:int; while (_local3 < m_vertexCount) { _local2 = m_coreVertices[_local3]; _local4 = (_local2.x - _arg1.x); _local5 = (_local2.y - _arg1.y); _local4 = Math.sqrt(((_local4 * _local4) + (_local5 * _local5))); if (_local4 > m_sweepRadius){ m_sweepRadius = _local4; }; _local3++; }; } override public function TestPoint(_arg1:b2XForm, _arg2:b2Vec2):Boolean{ var _local3:b2Vec2; var _local10:Number; var _local4:b2Mat22 = _arg1.R; var _local5:Number = (_arg2.x - _arg1.position.x); var _local6:Number = (_arg2.y - _arg1.position.y); var _local7:Number = ((_local5 * _local4.col1.x) + (_local6 * _local4.col1.y)); var _local8:Number = ((_local5 * _local4.col2.x) + (_local6 * _local4.col2.y)); var _local9:int; while (_local9 < m_vertexCount) { _local3 = m_vertices[_local9]; _local5 = (_local7 - _local3.x); _local6 = (_local8 - _local3.y); _local3 = m_normals[_local9]; _local10 = ((_local3.x * _local5) + (_local3.y * _local6)); if (_local10 > 0){ return (false); }; _local9++; }; return (true); } public static function ComputeCentroid(_arg1:Array, _arg2:int):b2Vec2{ var _local3:b2Vec2; var _local7:Number; var _local9:b2Vec2; var _local10:b2Vec2; var _local11:Number; var _local12:Number; var _local13:Number; var _local14:Number; var _local15:Number; var _local16:Number; _local3 = new b2Vec2(); var _local4:Number = 0; var _local5:Number = 0; var _local6:Number = 0; _local7 = (1 / 3); var _local8:int; while (_local8 < _arg2) { _local9 = _arg1[_local8]; _local10 = (((_local8 + 1) < _arg2)) ? _arg1[int((_local8 + 1))] : _arg1[0]; _local11 = (_local9.x - _local5); _local12 = (_local9.y - _local6); _local13 = (_local10.x - _local5); _local14 = (_local10.y - _local6); _local15 = ((_local11 * _local14) - (_local12 * _local13)); _local16 = (0.5 * _local15); _local4 = (_local4 + _local16); _local3.x = (_local3.x + ((_local16 * _local7) * ((_local5 + _local9.x) + _local10.x))); _local3.y = (_local3.y + ((_local16 * _local7) * ((_local6 + _local9.y) + _local10.y))); _local8++; }; _local3.x = (_local3.x * (1 / _local4)); _local3.y = (_local3.y * (1 / _local4)); return (_local3); } public static function ComputeOBB(_arg1:b2OBB, _arg2:Array, _arg3:int):void{ var _local4:int; var _local7:b2Vec2; var _local8:Number; var _local9:Number; var _local10:Number; var _local11:Number; var _local12:Number; var _local13:Number; var _local14:Number; var _local15:Number; var _local16:Number; var _local17:int; var _local18:Number; var _local19:Number; var _local20:Number; var _local21:Number; var _local22:Number; var _local23:Number; var _local24:Number; var _local25:b2Mat22; var _local5:Array = new Array((b2Settings.b2_maxPolygonVertices + 1)); _local4 = 0; while (_local4 < _arg3) { _local5[_local4] = _arg2[_local4]; _local4++; }; _local5[_arg3] = _local5[0]; var _local6:Number = Number.MAX_VALUE; _local4 = 1; while (_local4 <= _arg3) { _local7 = _local5[int((_local4 - 1))]; _local8 = (_local5[_local4].x - _local7.x); _local9 = (_local5[_local4].y - _local7.y); _local10 = Math.sqrt(((_local8 * _local8) + (_local9 * _local9))); _local8 = (_local8 / _local10); _local9 = (_local9 / _local10); _local11 = -(_local9); _local12 = _local8; _local13 = Number.MAX_VALUE; _local14 = Number.MAX_VALUE; _local15 = -(Number.MAX_VALUE); _local16 = -(Number.MAX_VALUE); _local17 = 0; while (_local17 < _arg3) { _local19 = (_local5[_local17].x - _local7.x); _local20 = (_local5[_local17].y - _local7.y); _local21 = ((_local8 * _local19) + (_local9 * _local20)); _local22 = ((_local11 * _local19) + (_local12 * _local20)); if (_local21 < _local13){ _local13 = _local21; }; if (_local22 < _local14){ _local14 = _local22; }; if (_local21 > _local15){ _local15 = _local21; }; if (_local22 > _local16){ _local16 = _local22; }; _local17++; }; _local18 = ((_local15 - _local13) * (_local16 - _local14)); if (_local18 < (0.95 * _local6)){ _local6 = _local18; _arg1.R.col1.x = _local8; _arg1.R.col1.y = _local9; _arg1.R.col2.x = _local11; _arg1.R.col2.y = _local12; _local23 = (0.5 * (_local13 + _local15)); _local24 = (0.5 * (_local14 + _local16)); _local25 = _arg1.R; _arg1.center.x = (_local7.x + ((_local25.col1.x * _local23) + (_local25.col2.x * _local24))); _arg1.center.y = (_local7.y + ((_local25.col1.y * _local23) + (_local25.col2.y * _local24))); _arg1.extents.x = (0.5 * (_local15 - _local13)); _arg1.extents.y = (0.5 * (_local16 - _local14)); }; _local4++; }; } } }//package Box2D.Collision.Shapes
Section 54
//b2Shape (Box2D.Collision.Shapes.b2Shape) package Box2D.Collision.Shapes { import Box2D.Collision.*; import Box2D.Common.Math.*; import Box2D.Dynamics.*; public class b2Shape { public var m_next:b2Shape; public var m_type:int; public var m_sweepRadius:Number; public var m_density:Number; public var m_filter:b2FilterData; public var m_friction:Number; public var m_isSensor:Boolean; public var m_restitution:Number; public var m_userData; public var m_proxyId:uint; public var m_body:b2Body; public static const e_polygonShape:int = 1; public static const e_unknownShape:int = -1; public static const e_circleShape:int = 0; public static const e_shapeTypeCount:int = 2; private static var s_resetAABB:b2AABB = new b2AABB(); private static var s_syncAABB:b2AABB = new b2AABB(); private static var s_proxyAABB:b2AABB = new b2AABB(); public function b2Shape(_arg1:b2ShapeDef){ m_userData = _arg1.userData; m_friction = _arg1.friction; m_restitution = _arg1.restitution; m_density = _arg1.density; m_body = null; m_sweepRadius = 0; m_next = null; m_proxyId = b2Pair.b2_nullProxy; m_filter = _arg1.filter.Copy(); m_isSensor = _arg1.isSensor; } public function SetUserData(_arg1):void{ m_userData = _arg1; } public function GetSweepRadius():Number{ return (m_sweepRadius); } public function GetNext():b2Shape{ return (m_next); } public function ComputeSweptAABB(_arg1:b2AABB, _arg2:b2XForm, _arg3:b2XForm):void{ } public function GetType():int{ return (m_type); } public function GetRestitution():Number{ return (m_restitution); } public function GetFriction():Number{ return (m_friction); } public function GetFilterData():b2FilterData{ return (m_filter.Copy()); } public function TestSegment(_arg1:b2XForm, _arg2:Array, _arg3:b2Vec2, _arg4:b2Segment, _arg5:Number):Boolean{ return (false); } public function RefilterProxy(_arg1:b2BroadPhase, _arg2:b2XForm):void{ if (m_proxyId == b2Pair.b2_nullProxy){ return; }; _arg1.DestroyProxy(m_proxyId); var _local3:b2AABB = s_resetAABB; ComputeAABB(_local3, _arg2); var _local4:Boolean = _arg1.InRange(_local3); if (_local4){ m_proxyId = _arg1.CreateProxy(_local3, this); } else { m_proxyId = b2Pair.b2_nullProxy; }; } public function SetFilterData(_arg1:b2FilterData):void{ m_filter = _arg1.Copy(); } public function GetUserData(){ return (m_userData); } public function Synchronize(_arg1:b2BroadPhase, _arg2:b2XForm, _arg3:b2XForm):Boolean{ if (m_proxyId == b2Pair.b2_nullProxy){ return (false); }; var _local4:b2AABB = s_syncAABB; ComputeSweptAABB(_local4, _arg2, _arg3); if (_arg1.InRange(_local4)){ _arg1.MoveProxy(m_proxyId, _local4); return (true); }; return (false); } public function ComputeMass(_arg1:b2MassData):void{ } public function IsSensor():Boolean{ return (m_isSensor); } public function DestroyProxy(_arg1:b2BroadPhase):void{ if (m_proxyId != b2Pair.b2_nullProxy){ _arg1.DestroyProxy(m_proxyId); m_proxyId = b2Pair.b2_nullProxy; }; } public function UpdateSweepRadius(_arg1:b2Vec2):void{ } public function ComputeAABB(_arg1:b2AABB, _arg2:b2XForm):void{ } public function GetBody():b2Body{ return (m_body); } public function CreateProxy(_arg1:b2BroadPhase, _arg2:b2XForm):void{ var _local3:b2AABB = s_proxyAABB; ComputeAABB(_local3, _arg2); var _local4:Boolean = _arg1.InRange(_local3); if (_local4){ m_proxyId = _arg1.CreateProxy(_local3, this); } else { m_proxyId = b2Pair.b2_nullProxy; }; } public function TestPoint(_arg1:b2XForm, _arg2:b2Vec2):Boolean{ return (false); } public static function Destroy(_arg1:b2Shape, _arg2):void{ } public static function Create(_arg1:b2ShapeDef, _arg2):b2Shape{ switch (_arg1.type){ case e_circleShape: return (new b2CircleShape(_arg1)); case e_polygonShape: return (new b2PolygonShape(_arg1)); default: return (null); }; } } }//package Box2D.Collision.Shapes
Section 55
//b2ShapeDef (Box2D.Collision.Shapes.b2ShapeDef) package Box2D.Collision.Shapes { public class b2ShapeDef { public var friction:Number;// = 0.2 public var isSensor:Boolean;// = false public var density:Number;// = 0 public var restitution:Number;// = 0 public var userData;// = null public var filter:b2FilterData; public var type:int; public function b2ShapeDef(){ type = b2Shape.e_unknownShape; filter = new b2FilterData(); super(); } } }//package Box2D.Collision.Shapes
Section 56
//b2AABB (Box2D.Collision.b2AABB) package Box2D.Collision { import Box2D.Common.Math.*; public class b2AABB { public var upperBound:b2Vec2; public var lowerBound:b2Vec2; public function b2AABB(){ lowerBound = new b2Vec2(); upperBound = new b2Vec2(); super(); } public function IsValid():Boolean{ var _local1:Number = (upperBound.x - lowerBound.x); var _local2:Number = (upperBound.y - lowerBound.y); var _local3:Boolean = (((_local1 >= 0)) && ((_local2 >= 0))); _local3 = ((((_local3) && (lowerBound.IsValid()))) && (upperBound.IsValid())); return (_local3); } } }//package Box2D.Collision
Section 57
//b2Bound (Box2D.Collision.b2Bound) package Box2D.Collision { public class b2Bound { public var value:uint; public var proxyId:uint; public var stabbingCount:uint; public function Swap(_arg1:b2Bound):void{ var _local2:uint = value; var _local3:uint = proxyId; var _local4:uint = stabbingCount; value = _arg1.value; proxyId = _arg1.proxyId; stabbingCount = _arg1.stabbingCount; _arg1.value = _local2; _arg1.proxyId = _local3; _arg1.stabbingCount = _local4; } public function IsLower():Boolean{ return (((value & 1) == 0)); } public function IsUpper():Boolean{ return (((value & 1) == 1)); } } }//package Box2D.Collision
Section 58
//b2BoundValues (Box2D.Collision.b2BoundValues) package Box2D.Collision { public class b2BoundValues { public var lowerValues:Array; public var upperValues:Array; public function b2BoundValues(){ lowerValues = [0, 0]; upperValues = [0, 0]; super(); } } }//package Box2D.Collision
Section 59
//b2BroadPhase (Box2D.Collision.b2BroadPhase) package Box2D.Collision { import Box2D.Common.Math.*; import Box2D.Common.*; public class b2BroadPhase { public var m_bounds:Array; public var m_quantizationFactor:b2Vec2; public var m_worldAABB:b2AABB; public var m_freeProxy:uint; public var m_proxyCount:int; public var m_proxyPool:Array; public var m_queryResultCount:int; public var m_pairManager:b2PairManager; public var m_timeStamp:uint; public var m_queryResults:Array; public static const b2_nullEdge:uint = 0xFFFF; public static const b2_invalid:uint = 0xFFFF; public static var s_validate:Boolean = false; public function b2BroadPhase(_arg1:b2AABB, _arg2:b2PairCallback){ var _local3:int; var _local5:Number; var _local6:b2Proxy; var _local7:int; m_pairManager = new b2PairManager(); m_proxyPool = new Array(b2Settings.b2_maxPairs); m_bounds = new Array((2 * b2Settings.b2_maxProxies)); m_queryResults = new Array(b2Settings.b2_maxProxies); m_quantizationFactor = new b2Vec2(); super(); m_pairManager.Initialize(this, _arg2); m_worldAABB = _arg1; m_proxyCount = 0; _local3 = 0; while (_local3 < b2Settings.b2_maxProxies) { m_queryResults[_local3] = 0; _local3++; }; m_bounds = new Array(2); _local3 = 0; while (_local3 < 2) { m_bounds[_local3] = new Array((2 * b2Settings.b2_maxProxies)); _local7 = 0; while (_local7 < (2 * b2Settings.b2_maxProxies)) { m_bounds[_local3][_local7] = new b2Bound(); _local7++; }; _local3++; }; var _local4:Number = (_arg1.upperBound.x - _arg1.lowerBound.x); _local5 = (_arg1.upperBound.y - _arg1.lowerBound.y); m_quantizationFactor.x = (b2Settings.USHRT_MAX / _local4); m_quantizationFactor.y = (b2Settings.USHRT_MAX / _local5); _local3 = 0; while (_local3 < (b2Settings.b2_maxProxies - 1)) { _local6 = new b2Proxy(); m_proxyPool[_local3] = _local6; _local6.SetNext((_local3 + 1)); _local6.timeStamp = 0; _local6.overlapCount = b2_invalid; _local6.userData = null; _local3++; }; _local6 = new b2Proxy(); m_proxyPool[int((b2Settings.b2_maxProxies - 1))] = _local6; _local6.SetNext(b2Pair.b2_nullProxy); _local6.timeStamp = 0; _local6.overlapCount = b2_invalid; _local6.userData = null; m_freeProxy = 0; m_timeStamp = 1; m_queryResultCount = 0; } public function QueryAABB(_arg1:b2AABB, _arg2, _arg3:int):int{ var _local6:uint; var _local7:uint; var _local12:b2Proxy; var _local4:Array = new Array(); var _local5:Array = new Array(); ComputeBounds(_local4, _local5, _arg1); var _local8:Array = [_local6]; var _local9:Array = [_local7]; Query(_local8, _local9, _local4[0], _local5[0], m_bounds[0], (2 * m_proxyCount), 0); Query(_local8, _local9, _local4[1], _local5[1], m_bounds[1], (2 * m_proxyCount), 1); var _local10:int; var _local11:int; while ((((_local11 < m_queryResultCount)) && ((_local10 < _arg3)))) { _local12 = m_proxyPool[m_queryResults[_local11]]; _arg2[_local11] = _local12.userData; _local11++; _local10++; }; m_queryResultCount = 0; IncrementTimeStamp(); return (_local10); } public function Commit():void{ m_pairManager.Commit(); } public function GetProxy(_arg1:int):b2Proxy{ var _local2:b2Proxy = m_proxyPool[_arg1]; if ((((_arg1 == b2Pair.b2_nullProxy)) || ((_local2.IsValid() == false)))){ return (null); }; return (_local2); } private function IncrementTimeStamp():void{ var _local1:uint; if (m_timeStamp == b2Settings.USHRT_MAX){ _local1 = 0; while (_local1 < b2Settings.b2_maxProxies) { (m_proxyPool[_local1] as b2Proxy).timeStamp = 0; _local1++; }; m_timeStamp = 1; } else { m_timeStamp++; }; } private function Query(_arg1:Array, _arg2:Array, _arg3:uint, _arg4:uint, _arg5:Array, _arg6:uint, _arg7:int):void{ var _local10:b2Bound; var _local12:int; var _local13:int; var _local14:b2Proxy; var _local8:uint = BinarySearch(_arg5, _arg6, _arg3); var _local9:uint = BinarySearch(_arg5, _arg6, _arg4); var _local11:uint = _local8; while (_local11 < _local9) { _local10 = _arg5[_local11]; if (_local10.IsLower()){ IncrementOverlapCount(_local10.proxyId); }; _local11++; }; if (_local8 > 0){ _local12 = (_local8 - 1); _local10 = _arg5[_local12]; _local13 = _local10.stabbingCount; while (_local13) { _local10 = _arg5[_local12]; if (_local10.IsLower()){ _local14 = m_proxyPool[_local10.proxyId]; if (_local8 <= _local14.upperBounds[_arg7]){ IncrementOverlapCount(_local10.proxyId); _local13--; }; }; _local12--; }; }; _arg1[0] = _local8; _arg2[0] = _local9; } private function TestOverlapValidate(_arg1:b2Proxy, _arg2:b2Proxy):Boolean{ var _local4:Array; var _local5:b2Bound; var _local6:b2Bound; var _local3:int; while (_local3 < 2) { _local4 = m_bounds[_local3]; _local5 = _local4[_arg1.lowerBounds[_local3]]; _local6 = _local4[_arg2.upperBounds[_local3]]; if (_local5.value > _local6.value){ return (false); }; _local5 = _local4[_arg1.upperBounds[_local3]]; _local6 = _local4[_arg2.lowerBounds[_local3]]; if (_local5.value < _local6.value){ return (false); }; _local3++; }; return (true); } private function ComputeBounds(_arg1:Array, _arg2:Array, _arg3:b2AABB):void{ var _local4:Number = _arg3.lowerBound.x; var _local5:Number = _arg3.lowerBound.y; _local4 = b2Math.b2Min(_local4, m_worldAABB.upperBound.x); _local5 = b2Math.b2Min(_local5, m_worldAABB.upperBound.y); _local4 = b2Math.b2Max(_local4, m_worldAABB.lowerBound.x); _local5 = b2Math.b2Max(_local5, m_worldAABB.lowerBound.y); var _local6:Number = _arg3.upperBound.x; var _local7:Number = _arg3.upperBound.y; _local6 = b2Math.b2Min(_local6, m_worldAABB.upperBound.x); _local7 = b2Math.b2Min(_local7, m_worldAABB.upperBound.y); _local6 = b2Math.b2Max(_local6, m_worldAABB.lowerBound.x); _local7 = b2Math.b2Max(_local7, m_worldAABB.lowerBound.y); _arg1[0] = (uint((m_quantizationFactor.x * (_local4 - m_worldAABB.lowerBound.x))) & (b2Settings.USHRT_MAX - 1)); _arg2[0] = ((uint((m_quantizationFactor.x * (_local6 - m_worldAABB.lowerBound.x))) & 0xFFFF) | 1); _arg1[1] = (uint((m_quantizationFactor.y * (_local5 - m_worldAABB.lowerBound.y))) & (b2Settings.USHRT_MAX - 1)); _arg2[1] = ((uint((m_quantizationFactor.y * (_local7 - m_worldAABB.lowerBound.y))) & 0xFFFF) | 1); } public function CreateProxy(_arg1:b2AABB, _arg2):uint{ var _local3:uint; var _local4:b2Proxy; var _local11:Array; var _local12:uint; var _local13:uint; var _local14:Array; var _local15:Array; var _local16:Array; var _local17:int; var _local18:int; var _local19:b2Bound; var _local20:b2Bound; var _local21:b2Bound; var _local22:int; var _local23:b2Proxy; var _local5:uint = m_freeProxy; _local4 = m_proxyPool[_local5]; m_freeProxy = _local4.GetNext(); _local4.overlapCount = 0; _local4.userData = _arg2; var _local6:uint = (2 * m_proxyCount); var _local7:Array = new Array(); var _local8:Array = new Array(); ComputeBounds(_local7, _local8, _arg1); var _local9:int; while (_local9 < 2) { _local11 = m_bounds[_local9]; _local14 = [_local12]; _local15 = [_local13]; Query(_local14, _local15, _local7[_local9], _local8[_local9], _local11, _local6, _local9); _local12 = _local14[0]; _local13 = _local15[0]; _local16 = new Array(); _local18 = (_local6 - _local13); _local17 = 0; while (_local17 < _local18) { _local16[_local17] = new b2Bound(); _local19 = _local16[_local17]; _local20 = _local11[int((_local13 + _local17))]; _local19.value = _local20.value; _local19.proxyId = _local20.proxyId; _local19.stabbingCount = _local20.stabbingCount; _local17++; }; _local18 = _local16.length; _local22 = (_local13 + 2); _local17 = 0; while (_local17 < _local18) { _local20 = _local16[_local17]; _local19 = _local11[int((_local22 + _local17))]; _local19.value = _local20.value; _local19.proxyId = _local20.proxyId; _local19.stabbingCount = _local20.stabbingCount; _local17++; }; _local16 = new Array(); _local18 = (_local13 - _local12); _local17 = 0; while (_local17 < _local18) { _local16[_local17] = new b2Bound(); _local19 = _local16[_local17]; _local20 = _local11[int((_local12 + _local17))]; _local19.value = _local20.value; _local19.proxyId = _local20.proxyId; _local19.stabbingCount = _local20.stabbingCount; _local17++; }; _local18 = _local16.length; _local22 = (_local12 + 1); _local17 = 0; while (_local17 < _local18) { _local20 = _local16[_local17]; _local19 = _local11[int((_local22 + _local17))]; _local19.value = _local20.value; _local19.proxyId = _local20.proxyId; _local19.stabbingCount = _local20.stabbingCount; _local17++; }; _local13++; _local19 = _local11[_local12]; _local20 = _local11[_local13]; _local19.value = _local7[_local9]; _local19.proxyId = _local5; _local20.value = _local8[_local9]; _local20.proxyId = _local5; _local21 = _local11[int((_local12 - 1))]; _local19.stabbingCount = ((_local12 == 0)) ? 0 : _local21.stabbingCount; _local21 = _local11[int((_local13 - 1))]; _local20.stabbingCount = _local21.stabbingCount; _local3 = _local12; while (_local3 < _local13) { _local21 = _local11[_local3]; _local21.stabbingCount++; _local3++; }; _local3 = _local12; while (_local3 < (_local6 + 2)) { _local19 = _local11[_local3]; _local23 = m_proxyPool[_local19.proxyId]; if (_local19.IsLower()){ _local23.lowerBounds[_local9] = _local3; } else { _local23.upperBounds[_local9] = _local3; }; _local3++; }; _local9++; }; m_proxyCount++; var _local10:int; while (_local10 < m_queryResultCount) { m_pairManager.AddBufferedPair(_local5, m_queryResults[_local10]); _local10++; }; m_pairManager.Commit(); m_queryResultCount = 0; IncrementTimeStamp(); return (_local5); } public function DestroyProxy(_arg1:uint):void{ var _local2:b2Bound; var _local3:b2Bound; var _local8:Array; var _local9:uint; var _local10:uint; var _local11:uint; var _local12:uint; var _local13:Array; var _local14:int; var _local15:int; var _local16:int; var _local17:uint; var _local18:int; var _local19:b2Proxy; var _local4:b2Proxy = m_proxyPool[_arg1]; var _local5:int = (2 * m_proxyCount); var _local6:int; while (_local6 < 2) { _local8 = m_bounds[_local6]; _local9 = _local4.lowerBounds[_local6]; _local10 = _local4.upperBounds[_local6]; _local2 = _local8[_local9]; _local11 = _local2.value; _local3 = _local8[_local10]; _local12 = _local3.value; _local13 = new Array(); _local15 = ((_local10 - _local9) - 1); _local14 = 0; while (_local14 < _local15) { _local13[_local14] = new b2Bound(); _local2 = _local13[_local14]; _local3 = _local8[int(((_local9 + 1) + _local14))]; _local2.value = _local3.value; _local2.proxyId = _local3.proxyId; _local2.stabbingCount = _local3.stabbingCount; _local14++; }; _local15 = _local13.length; _local16 = _local9; _local14 = 0; while (_local14 < _local15) { _local3 = _local13[_local14]; _local2 = _local8[int((_local16 + _local14))]; _local2.value = _local3.value; _local2.proxyId = _local3.proxyId; _local2.stabbingCount = _local3.stabbingCount; _local14++; }; _local13 = new Array(); _local15 = ((_local5 - _local10) - 1); _local14 = 0; while (_local14 < _local15) { _local13[_local14] = new b2Bound(); _local2 = _local13[_local14]; _local3 = _local8[int(((_local10 + 1) + _local14))]; _local2.value = _local3.value; _local2.proxyId = _local3.proxyId; _local2.stabbingCount = _local3.stabbingCount; _local14++; }; _local15 = _local13.length; _local16 = (_local10 - 1); _local14 = 0; while (_local14 < _local15) { _local3 = _local13[_local14]; _local2 = _local8[int((_local16 + _local14))]; _local2.value = _local3.value; _local2.proxyId = _local3.proxyId; _local2.stabbingCount = _local3.stabbingCount; _local14++; }; _local15 = (_local5 - 2); _local17 = _local9; while (_local17 < _local15) { _local2 = _local8[_local17]; _local19 = m_proxyPool[_local2.proxyId]; if (_local2.IsLower()){ _local19.lowerBounds[_local6] = _local17; } else { _local19.upperBounds[_local6] = _local17; }; _local17++; }; _local15 = (_local10 - 1); _local18 = _local9; while (_local18 < _local15) { _local2 = _local8[_local18]; _local2.stabbingCount--; _local18++; }; Query([0], [0], _local11, _local12, _local8, (_local5 - 2), _local6); _local6++; }; var _local7:int; while (_local7 < m_queryResultCount) { m_pairManager.RemoveBufferedPair(_arg1, m_queryResults[_local7]); _local7++; }; m_pairManager.Commit(); m_queryResultCount = 0; IncrementTimeStamp(); _local4.userData = null; _local4.overlapCount = b2_invalid; _local4.lowerBounds[0] = b2_invalid; _local4.lowerBounds[1] = b2_invalid; _local4.upperBounds[0] = b2_invalid; _local4.upperBounds[1] = b2_invalid; _local4.SetNext(m_freeProxy); m_freeProxy = _arg1; m_proxyCount--; } public function TestOverlap(_arg1:b2BoundValues, _arg2:b2Proxy):Boolean{ var _local4:Array; var _local5:b2Bound; var _local3:int; while (_local3 < 2) { _local4 = m_bounds[_local3]; _local5 = _local4[_arg2.upperBounds[_local3]]; if (_arg1.lowerValues[_local3] > _local5.value){ return (false); }; _local5 = _local4[_arg2.lowerBounds[_local3]]; if (_arg1.upperValues[_local3] < _local5.value){ return (false); }; _local3++; }; return (true); } public function Validate():void{ var _local1:b2Pair; var _local2:b2Proxy; var _local3:b2Proxy; var _local4:Boolean; var _local6:b2Bound; var _local7:uint; var _local8:uint; var _local9:uint; var _local10:b2Bound; var _local5:int; while (_local5 < 2) { _local6 = m_bounds[_local5]; _local7 = (2 * m_proxyCount); _local8 = 0; _local9 = 0; while (_local9 < _local7) { _local10 = _local6[_local9]; if (_local10.IsLower() == true){ _local8++; } else { _local8--; }; _local9++; }; _local5++; }; } private function IncrementOverlapCount(_arg1:uint):void{ var _local2:b2Proxy = m_proxyPool[_arg1]; if (_local2.timeStamp < m_timeStamp){ _local2.timeStamp = m_timeStamp; _local2.overlapCount = 1; } else { _local2.overlapCount = 2; m_queryResults[m_queryResultCount] = _arg1; m_queryResultCount++; }; } public function InRange(_arg1:b2AABB):Boolean{ var _local2:Number; var _local3:Number; var _local4:Number; var _local5:Number; _local2 = _arg1.lowerBound.x; _local3 = _arg1.lowerBound.y; _local2 = (_local2 - m_worldAABB.upperBound.x); _local3 = (_local3 - m_worldAABB.upperBound.y); _local4 = m_worldAABB.lowerBound.x; _local5 = m_worldAABB.lowerBound.y; _local4 = (_local4 - _arg1.upperBound.x); _local5 = (_local5 - _arg1.upperBound.y); _local2 = b2Math.b2Max(_local2, _local4); _local3 = b2Math.b2Max(_local3, _local5); return ((b2Math.b2Max(_local2, _local3) < 0)); } public function MoveProxy(_arg1:uint, _arg2:b2AABB):void{ var _local3:Array; var _local4:int; var _local5:uint; var _local6:uint; var _local7:b2Bound; var _local8:b2Bound; var _local9:b2Bound; var _local10:uint; var _local11:b2Proxy; var _local16:Array; var _local17:uint; var _local18:uint; var _local19:uint; var _local20:uint; var _local21:int; var _local22:int; var _local23:uint; var _local24:b2Proxy; if ((((_arg1 == b2Pair.b2_nullProxy)) || ((b2Settings.b2_maxProxies <= _arg1)))){ return; }; if (_arg2.IsValid() == false){ return; }; var _local12:uint = (2 * m_proxyCount); var _local13:b2Proxy = m_proxyPool[_arg1]; var _local14:b2BoundValues = new b2BoundValues(); ComputeBounds(_local14.lowerValues, _local14.upperValues, _arg2); var _local15:b2BoundValues = new b2BoundValues(); _local5 = 0; while (_local5 < 2) { _local7 = m_bounds[_local5][_local13.lowerBounds[_local5]]; _local15.lowerValues[_local5] = _local7.value; _local7 = m_bounds[_local5][_local13.upperBounds[_local5]]; _local15.upperValues[_local5] = _local7.value; _local5++; }; _local5 = 0; while (_local5 < 2) { _local16 = m_bounds[_local5]; _local17 = _local13.lowerBounds[_local5]; _local18 = _local13.upperBounds[_local5]; _local19 = _local14.lowerValues[_local5]; _local20 = _local14.upperValues[_local5]; _local7 = _local16[_local17]; _local21 = (_local19 - _local7.value); _local7.value = _local19; _local7 = _local16[_local18]; _local22 = (_local20 - _local7.value); _local7.value = _local20; if (_local21 < 0){ _local6 = _local17; while ((((_local6 > 0)) && ((_local19 < (_local16[int((_local6 - 1))] as b2Bound).value)))) { _local7 = _local16[_local6]; _local8 = _local16[int((_local6 - 1))]; _local23 = _local8.proxyId; _local24 = m_proxyPool[_local8.proxyId]; _local8.stabbingCount++; if (_local8.IsUpper() == true){ if (TestOverlap(_local14, _local24)){ m_pairManager.AddBufferedPair(_arg1, _local23); }; _local3 = _local24.upperBounds; _local4 = _local3[_local5]; _local4++; _local3[_local5] = _local4; _local7.stabbingCount++; } else { _local3 = _local24.lowerBounds; _local4 = _local3[_local5]; _local4++; _local3[_local5] = _local4; _local7.stabbingCount--; }; _local3 = _local13.lowerBounds; _local4 = _local3[_local5]; _local4--; _local3[_local5] = _local4; _local7.Swap(_local8); _local6--; }; }; if (_local22 > 0){ _local6 = _local18; while ((((_local6 < (_local12 - 1))) && (((_local16[int((_local6 + 1))] as b2Bound).value <= _local20)))) { _local7 = _local16[_local6]; _local9 = _local16[int((_local6 + 1))]; _local10 = _local9.proxyId; _local11 = m_proxyPool[_local10]; _local9.stabbingCount++; if (_local9.IsLower() == true){ if (TestOverlap(_local14, _local11)){ m_pairManager.AddBufferedPair(_arg1, _local10); }; _local3 = _local11.lowerBounds; _local4 = _local3[_local5]; _local4--; _local3[_local5] = _local4; _local7.stabbingCount++; } else { _local3 = _local11.upperBounds; _local4 = _local3[_local5]; _local4--; _local3[_local5] = _local4; _local7.stabbingCount--; }; _local3 = _local13.upperBounds; _local4 = _local3[_local5]; _local4++; _local3[_local5] = _local4; _local7.Swap(_local9); _local6++; }; }; if (_local21 > 0){ _local6 = _local17; while ((((_local6 < (_local12 - 1))) && (((_local16[int((_local6 + 1))] as b2Bound).value <= _local19)))) { _local7 = _local16[_local6]; _local9 = _local16[int((_local6 + 1))]; _local10 = _local9.proxyId; _local11 = m_proxyPool[_local10]; _local9.stabbingCount--; if (_local9.IsUpper()){ if (TestOverlap(_local15, _local11)){ m_pairManager.RemoveBufferedPair(_arg1, _local10); }; _local3 = _local11.upperBounds; _local4 = _local3[_local5]; _local4--; _local3[_local5] = _local4; _local7.stabbingCount--; } else { _local3 = _local11.lowerBounds; _local4 = _local3[_local5]; _local4--; _local3[_local5] = _local4; _local7.stabbingCount++; }; _local3 = _local13.lowerBounds; _local4 = _local3[_local5]; _local4++; _local3[_local5] = _local4; _local7.Swap(_local9); _local6++; }; }; if (_local22 < 0){ _local6 = _local18; while ((((_local6 > 0)) && ((_local20 < (_local16[int((_local6 - 1))] as b2Bound).value)))) { _local7 = _local16[_local6]; _local8 = _local16[int((_local6 - 1))]; _local23 = _local8.proxyId; _local24 = m_proxyPool[_local23]; _local8.stabbingCount--; if (_local8.IsLower() == true){ if (TestOverlap(_local15, _local24)){ m_pairManager.RemoveBufferedPair(_arg1, _local23); }; _local3 = _local24.lowerBounds; _local4 = _local3[_local5]; _local4++; _local3[_local5] = _local4; _local7.stabbingCount--; } else { _local3 = _local24.upperBounds; _local4 = _local3[_local5]; _local4++; _local3[_local5] = _local4; _local7.stabbingCount++; }; _local3 = _local13.upperBounds; _local4 = _local3[_local5]; _local4--; _local3[_local5] = _local4; _local7.Swap(_local8); _local6--; }; }; _local5++; }; } public static function BinarySearch(_arg1:Array, _arg2:int, _arg3:uint):uint{ var _local6:int; var _local7:b2Bound; var _local4:int; var _local5:int = (_arg2 - 1); while (_local4 <= _local5) { _local6 = ((_local4 + _local5) / 2); _local7 = _arg1[_local6]; if (_local7.value > _arg3){ _local5 = (_local6 - 1); } else { if (_local7.value < _arg3){ _local4 = (_local6 + 1); } else { return (uint(_local6)); }; }; }; return (uint(_local4)); } } }//package Box2D.Collision
Section 60
//b2BufferedPair (Box2D.Collision.b2BufferedPair) package Box2D.Collision { public class b2BufferedPair { public var proxyId1:uint; public var proxyId2:uint; } }//package Box2D.Collision
Section 61
//b2Collision (Box2D.Collision.b2Collision) package Box2D.Collision { import Box2D.Collision.Shapes.*; import Box2D.Common.Math.*; import Box2D.Common.*; public class b2Collision { public static const b2_nullFeature:uint = 0xFF; private static var b2CollidePolyTempVec:b2Vec2 = new b2Vec2(); public static function EdgeSeparation(_arg1:b2PolygonShape, _arg2:b2XForm, _arg3:int, _arg4:b2PolygonShape, _arg5:b2XForm):Number{ var _local11:b2Mat22; var _local12:b2Vec2; var _local25:Number; var _local6:int = _arg1.m_vertexCount; var _local7:Array = _arg1.m_vertices; var _local8:Array = _arg1.m_normals; var _local9:int = _arg4.m_vertexCount; var _local10:Array = _arg4.m_vertices; _local11 = _arg2.R; _local12 = _local8[_arg3]; var _local13:Number = ((_local11.col1.x * _local12.x) + (_local11.col2.x * _local12.y)); var _local14:Number = ((_local11.col1.y * _local12.x) + (_local11.col2.y * _local12.y)); _local11 = _arg5.R; var _local15:Number = ((_local11.col1.x * _local13) + (_local11.col1.y * _local14)); var _local16:Number = ((_local11.col2.x * _local13) + (_local11.col2.y * _local14)); var _local17:int; var _local18:Number = Number.MAX_VALUE; var _local19:int; while (_local19 < _local9) { _local12 = _local10[_local19]; _local25 = ((_local12.x * _local15) + (_local12.y * _local16)); if (_local25 < _local18){ _local18 = _local25; _local17 = _local19; }; _local19++; }; _local12 = _local7[_arg3]; _local11 = _arg2.R; var _local20:Number = (_arg2.position.x + ((_local11.col1.x * _local12.x) + (_local11.col2.x * _local12.y))); var _local21:Number = (_arg2.position.y + ((_local11.col1.y * _local12.x) + (_local11.col2.y * _local12.y))); _local12 = _local10[_local17]; _local11 = _arg5.R; var _local22:Number = (_arg5.position.x + ((_local11.col1.x * _local12.x) + (_local11.col2.x * _local12.y))); var _local23:Number = (_arg5.position.y + ((_local11.col1.y * _local12.x) + (_local11.col2.y * _local12.y))); _local22 = (_local22 - _local20); _local23 = (_local23 - _local21); var _local24:Number = ((_local22 * _local13) + (_local23 * _local14)); return (_local24); } public static function b2TestOverlap(_arg1:b2AABB, _arg2:b2AABB):Boolean{ var _local3:b2Vec2 = _arg2.lowerBound; var _local4:b2Vec2 = _arg1.upperBound; var _local5:Number = (_local3.x - _local4.x); var _local6:Number = (_local3.y - _local4.y); _local3 = _arg1.lowerBound; _local4 = _arg2.upperBound; var _local7:Number = (_local3.x - _local4.x); var _local8:Number = (_local3.y - _local4.y); if ((((_local5 > 0)) || ((_local6 > 0)))){ return (false); }; if ((((_local7 > 0)) || ((_local8 > 0)))){ return (false); }; return (true); } public static function FindIncidentEdge(_arg1:Array, _arg2:b2PolygonShape, _arg3:b2XForm, _arg4:int, _arg5:b2PolygonShape, _arg6:b2XForm):void{ var _local12:b2Mat22; var _local13:b2Vec2; var _local20:ClipVertex; var _local23:Number; var _local7:int = _arg2.m_vertexCount; var _local8:Array = _arg2.m_normals; var _local9:int = _arg5.m_vertexCount; var _local10:Array = _arg5.m_vertices; var _local11:Array = _arg5.m_normals; _local12 = _arg3.R; _local13 = _local8[_arg4]; var _local14:Number = ((_local12.col1.x * _local13.x) + (_local12.col2.x * _local13.y)); var _local15:Number = ((_local12.col1.y * _local13.x) + (_local12.col2.y * _local13.y)); _local12 = _arg6.R; var _local16:Number = ((_local12.col1.x * _local14) + (_local12.col1.y * _local15)); _local15 = ((_local12.col2.x * _local14) + (_local12.col2.y * _local15)); _local14 = _local16; var _local17:int; var _local18:Number = Number.MAX_VALUE; var _local19:int; while (_local19 < _local9) { _local13 = _local11[_local19]; _local23 = ((_local14 * _local13.x) + (_local15 * _local13.y)); if (_local23 < _local18){ _local18 = _local23; _local17 = _local19; }; _local19++; }; var _local21:int = _local17; var _local22:int = (((_local21 + 1) < _local9)) ? (_local21 + 1) : 0; _local20 = _arg1[0]; _local13 = _local10[_local21]; _local12 = _arg6.R; _local20.v.x = (_arg6.position.x + ((_local12.col1.x * _local13.x) + (_local12.col2.x * _local13.y))); _local20.v.y = (_arg6.position.y + ((_local12.col1.y * _local13.x) + (_local12.col2.y * _local13.y))); _local20.id.features.referenceEdge = _arg4; _local20.id.features.incidentEdge = _local21; _local20.id.features.incidentVertex = 0; _local20 = _arg1[1]; _local13 = _local10[_local22]; _local12 = _arg6.R; _local20.v.x = (_arg6.position.x + ((_local12.col1.x * _local13.x) + (_local12.col2.x * _local13.y))); _local20.v.y = (_arg6.position.y + ((_local12.col1.y * _local13.x) + (_local12.col2.y * _local13.y))); _local20.id.features.referenceEdge = _arg4; _local20.id.features.incidentEdge = _local22; _local20.id.features.incidentVertex = 1; } public static function b2CollidePolygons(_arg1:b2Manifold, _arg2:b2PolygonShape, _arg3:b2XForm, _arg4:b2PolygonShape, _arg5:b2XForm):void{ var _local6:ClipVertex; var _local13:b2PolygonShape; var _local14:b2PolygonShape; var _local17:int; var _local18:uint; var _local34:int; var _local37:b2Vec2; var _local38:Number; var _local39:b2ManifoldPoint; _arg1.pointCount = 0; var _local7:int; var _local8:Array = [_local7]; var _local9:Number = FindMaxSeparation(_local8, _arg2, _arg3, _arg4, _arg5); _local7 = _local8[0]; if (_local9 > 0){ return; }; var _local10:int; var _local11:Array = [_local10]; var _local12:Number = FindMaxSeparation(_local11, _arg4, _arg5, _arg2, _arg3); _local10 = _local11[0]; if (_local12 > 0){ return; }; var _local15:b2XForm = new b2XForm(); var _local16:b2XForm = new b2XForm(); var _local19:Number = 0.98; var _local20:Number = 0.001; if (_local12 > ((_local19 * _local9) + _local20)){ _local13 = _arg4; _local14 = _arg2; _local15.Set(_arg5); _local16.Set(_arg3); _local17 = _local10; _local18 = 1; } else { _local13 = _arg2; _local14 = _arg4; _local15.Set(_arg3); _local16.Set(_arg5); _local17 = _local7; _local18 = 0; }; var _local21:Array = [new ClipVertex(), new ClipVertex()]; FindIncidentEdge(_local21, _local13, _local15, _local17, _local14, _local16); var _local22:int = _local13.m_vertexCount; var _local23:Array = _local13.m_vertices; var _local24:b2Vec2 = _local23[_local17]; var _local25:b2Vec2 = _local24.Copy(); if ((_local17 + 1) < _local22){ _local24 = _local23[int((_local17 + 1))]; _local37 = _local24.Copy(); } else { _local24 = _local23[0]; _local37 = _local24.Copy(); }; var _local26:b2Vec2 = b2Math.SubtractVV(_local37, _local25); var _local27:b2Vec2 = b2Math.b2MulMV(_local15.R, b2Math.SubtractVV(_local37, _local25)); _local27.Normalize(); var _local28:b2Vec2 = b2Math.b2CrossVF(_local27, 1); _local25 = b2Math.b2MulX(_local15, _local25); _local37 = b2Math.b2MulX(_local15, _local37); var _local29:Number = b2Math.b2Dot(_local28, _local25); var _local30:Number = -(b2Math.b2Dot(_local27, _local25)); var _local31:Number = b2Math.b2Dot(_local27, _local37); var _local32:Array = [new ClipVertex(), new ClipVertex()]; var _local33:Array = [new ClipVertex(), new ClipVertex()]; _local34 = ClipSegmentToLine(_local32, _local21, _local27.Negative(), _local30); if (_local34 < 2){ return; }; _local34 = ClipSegmentToLine(_local33, _local32, _local27, _local31); if (_local34 < 2){ return; }; _arg1.normal = (_local18) ? _local28.Negative() : _local28.Copy(); var _local35:int; var _local36:int; while (_local36 < b2Settings.b2_maxManifoldPoints) { _local6 = _local33[_local36]; _local38 = (b2Math.b2Dot(_local28, _local6.v) - _local29); if (_local38 <= 0){ _local39 = _arg1.points[_local35]; _local39.separation = _local38; _local39.localPoint1 = b2Math.b2MulXT(_arg3, _local6.v); _local39.localPoint2 = b2Math.b2MulXT(_arg5, _local6.v); _local39.id.key = _local6.id._key; _local39.id.features.flip = _local18; _local35++; }; _local36++; }; _arg1.pointCount = _local35; } public static function FindMaxSeparation(_arg1:Array, _arg2:b2PolygonShape, _arg3:b2XForm, _arg4:b2PolygonShape, _arg5:b2XForm):Number{ var _local8:b2Vec2; var _local9:b2Mat22; var _local22:int; var _local23:Number; var _local24:int; var _local25:Number; var _local6:int = _arg2.m_vertexCount; var _local7:Array = _arg2.m_normals; _local9 = _arg5.R; _local8 = _arg4.m_centroid; var _local10:Number = (_arg5.position.x + ((_local9.col1.x * _local8.x) + (_local9.col2.x * _local8.y))); var _local11:Number = (_arg5.position.y + ((_local9.col1.y * _local8.x) + (_local9.col2.y * _local8.y))); _local9 = _arg3.R; _local8 = _arg2.m_centroid; _local10 = (_local10 - (_arg3.position.x + ((_local9.col1.x * _local8.x) + (_local9.col2.x * _local8.y)))); _local11 = (_local11 - (_arg3.position.y + ((_local9.col1.y * _local8.x) + (_local9.col2.y * _local8.y)))); var _local12:Number = ((_local10 * _arg3.R.col1.x) + (_local11 * _arg3.R.col1.y)); var _local13:Number = ((_local10 * _arg3.R.col2.x) + (_local11 * _arg3.R.col2.y)); var _local14:int; var _local15:Number = -(Number.MAX_VALUE); var _local16:int; while (_local16 < _local6) { _local8 = _local7[_local16]; _local25 = ((_local8.x * _local12) + (_local8.y * _local13)); if (_local25 > _local15){ _local15 = _local25; _local14 = _local16; }; _local16++; }; var _local17:Number = EdgeSeparation(_arg2, _arg3, _local14, _arg4, _arg5); if (_local17 > 0){ return (_local17); }; var _local18:int = (((_local14 - 1) >= 0)) ? (_local14 - 1) : (_local6 - 1); var _local19:Number = EdgeSeparation(_arg2, _arg3, _local18, _arg4, _arg5); if (_local19 > 0){ return (_local19); }; var _local20:int = (((_local14 + 1) < _local6)) ? (_local14 + 1) : 0; var _local21:Number = EdgeSeparation(_arg2, _arg3, _local20, _arg4, _arg5); if (_local21 > 0){ return (_local21); }; if ((((_local19 > _local17)) && ((_local19 > _local21)))){ _local24 = -1; _local22 = _local18; _local23 = _local19; } else { if (_local21 > _local17){ _local24 = 1; _local22 = _local20; _local23 = _local21; } else { _arg1[0] = _local14; return (_local17); }; }; while (true) { if (_local24 == -1){ _local14 = (((_local22 - 1) >= 0)) ? (_local22 - 1) : (_local6 - 1); } else { _local14 = (((_local22 + 1) < _local6)) ? (_local22 + 1) : 0; }; _local17 = EdgeSeparation(_arg2, _arg3, _local14, _arg4, _arg5); if (_local17 > 0){ return (_local17); }; if (_local17 > _local23){ _local22 = _local14; _local23 = _local17; } else { break; }; }; _arg1[0] = _local22; return (_local23); } public static function ClipSegmentToLine(_arg1:Array, _arg2:Array, _arg3:b2Vec2, _arg4:Number):int{ var _local5:ClipVertex; var _local6:int; var _local7:b2Vec2; var _local8:b2Vec2; var _local9:Number; var _local11:Number; var _local12:b2Vec2; var _local13:ClipVertex; _local6 = 0; _local5 = _arg2[0]; _local7 = _local5.v; _local5 = _arg2[1]; _local8 = _local5.v; _local9 = (b2Math.b2Dot(_arg3, _local7) - _arg4); var _local10:Number = (b2Math.b2Dot(_arg3, _local8) - _arg4); if (_local9 <= 0){ var _temp1 = _local6; _local6 = (_local6 + 1); var _local14 = _temp1; _arg1[_local14] = _arg2[0]; }; if (_local10 <= 0){ var _temp2 = _local6; _local6 = (_local6 + 1); _local14 = _temp2; _arg1[_local14] = _arg2[1]; }; if ((_local9 * _local10) < 0){ _local11 = (_local9 / (_local9 - _local10)); _local5 = _arg1[_local6]; _local12 = _local5.v; _local12.x = (_local7.x + (_local11 * (_local8.x - _local7.x))); _local12.y = (_local7.y + (_local11 * (_local8.y - _local7.y))); _local5 = _arg1[_local6]; if (_local9 > 0){ _local13 = _arg2[0]; _local5.id = _local13.id; } else { _local13 = _arg2[1]; _local5.id = _local13.id; }; _local6++; }; return (_local6); } public static function b2CollideCircles(_arg1:b2Manifold, _arg2:b2CircleShape, _arg3:b2XForm, _arg4:b2CircleShape, _arg5:b2XForm):void{ var _local6:b2Mat22; var _local7:b2Vec2; var _local18:Number; var _local24:Number; var _local25:Number; _arg1.pointCount = 0; _local6 = _arg3.R; _local7 = _arg2.m_localPosition; var _local8:Number = (_arg3.position.x + ((_local6.col1.x * _local7.x) + (_local6.col2.x * _local7.y))); var _local9:Number = (_arg3.position.y + ((_local6.col1.y * _local7.x) + (_local6.col2.y * _local7.y))); _local6 = _arg5.R; _local7 = _arg4.m_localPosition; var _local10:Number = (_arg5.position.x + ((_local6.col1.x * _local7.x) + (_local6.col2.x * _local7.y))); var _local11:Number = (_arg5.position.y + ((_local6.col1.y * _local7.x) + (_local6.col2.y * _local7.y))); var _local12:Number = (_local10 - _local8); var _local13:Number = (_local11 - _local9); var _local14:Number = ((_local12 * _local12) + (_local13 * _local13)); var _local15:Number = _arg2.m_radius; var _local16:Number = _arg4.m_radius; var _local17:Number = (_local15 + _local16); if (_local14 > (_local17 * _local17)){ return; }; if (_local14 < Number.MIN_VALUE){ _local18 = -(_local17); _arg1.normal.Set(0, 1); } else { _local24 = Math.sqrt(_local14); _local18 = (_local24 - _local17); _local25 = (1 / _local24); _arg1.normal.x = (_local25 * _local12); _arg1.normal.y = (_local25 * _local13); }; _arg1.pointCount = 1; var _local19:b2ManifoldPoint = _arg1.points[0]; _local19.id.key = 0; _local19.separation = _local18; _local8 = (_local8 + (_local15 * _arg1.normal.x)); _local9 = (_local9 + (_local15 * _arg1.normal.y)); _local10 = (_local10 - (_local16 * _arg1.normal.x)); _local11 = (_local11 - (_local16 * _arg1.normal.y)); var _local20:Number = (0.5 * (_local8 + _local10)); var _local21:Number = (0.5 * (_local9 + _local11)); var _local22:Number = (_local20 - _arg3.position.x); var _local23:Number = (_local21 - _arg3.position.y); _local19.localPoint1.x = ((_local22 * _arg3.R.col1.x) + (_local23 * _arg3.R.col1.y)); _local19.localPoint1.y = ((_local22 * _arg3.R.col2.x) + (_local23 * _arg3.R.col2.y)); _local22 = (_local20 - _arg5.position.x); _local23 = (_local21 - _arg5.position.y); _local19.localPoint2.x = ((_local22 * _arg5.R.col1.x) + (_local23 * _arg5.R.col1.y)); _local19.localPoint2.y = ((_local22 * _arg5.R.col2.x) + (_local23 * _arg5.R.col2.y)); } public static function b2CollidePolygonAndCircle(_arg1:b2Manifold, _arg2:b2PolygonShape, _arg3:b2XForm, _arg4:b2CircleShape, _arg5:b2XForm):void{ var _local6:b2ManifoldPoint; var _local7:Number; var _local8:Number; var _local9:Number; var _local10:Number; var _local11:b2Vec2; var _local12:b2Mat22; var _local17:Number; var _local32:Number; var _local33:Number; var _local34:Number; _arg1.pointCount = 0; _local12 = _arg5.R; _local11 = _arg4.m_localPosition; var _local13:Number = (_arg5.position.x + ((_local12.col1.x * _local11.x) + (_local12.col2.x * _local11.y))); var _local14:Number = (_arg5.position.y + ((_local12.col1.y * _local11.x) + (_local12.col2.y * _local11.y))); _local7 = (_local13 - _arg3.position.x); _local8 = (_local14 - _arg3.position.y); _local12 = _arg3.R; var _local15:Number = ((_local7 * _local12.col1.x) + (_local8 * _local12.col1.y)); var _local16:Number = ((_local7 * _local12.col2.x) + (_local8 * _local12.col2.y)); var _local18:int; var _local19:Number = -(Number.MAX_VALUE); var _local20:Number = _arg4.m_radius; var _local21:int = _arg2.m_vertexCount; var _local22:Array = _arg2.m_vertices; var _local23:Array = _arg2.m_normals; var _local24:int; while (_local24 < _local21) { _local11 = _local22[_local24]; _local7 = (_local15 - _local11.x); _local8 = (_local16 - _local11.y); _local11 = _local23[_local24]; _local34 = ((_local11.x * _local7) + (_local11.y * _local8)); if (_local34 > _local20){ return; }; if (_local34 > _local19){ _local19 = _local34; _local18 = _local24; }; _local24++; }; if (_local19 < Number.MIN_VALUE){ _arg1.pointCount = 1; _local11 = _local23[_local18]; _local12 = _arg3.R; _arg1.normal.x = ((_local12.col1.x * _local11.x) + (_local12.col2.x * _local11.y)); _arg1.normal.y = ((_local12.col1.y * _local11.x) + (_local12.col2.y * _local11.y)); _local6 = _arg1.points[0]; _local6.id.features.incidentEdge = _local18; _local6.id.features.incidentVertex = b2_nullFeature; _local6.id.features.referenceEdge = 0; _local6.id.features.flip = 0; _local9 = (_local13 - (_local20 * _arg1.normal.x)); _local10 = (_local14 - (_local20 * _arg1.normal.y)); _local7 = (_local9 - _arg3.position.x); _local8 = (_local10 - _arg3.position.y); _local12 = _arg3.R; _local6.localPoint1.x = ((_local7 * _local12.col1.x) + (_local8 * _local12.col1.y)); _local6.localPoint1.y = ((_local7 * _local12.col2.x) + (_local8 * _local12.col2.y)); _local7 = (_local9 - _arg5.position.x); _local8 = (_local10 - _arg5.position.y); _local12 = _arg5.R; _local6.localPoint2.x = ((_local7 * _local12.col1.x) + (_local8 * _local12.col1.y)); _local6.localPoint2.y = ((_local7 * _local12.col2.x) + (_local8 * _local12.col2.y)); _local6.separation = (_local19 - _local20); return; }; var _local25:int = _local18; var _local26:int = (((_local25 + 1) < _local21)) ? (_local25 + 1) : 0; _local11 = _local22[_local25]; var _local27:b2Vec2 = _local22[_local26]; var _local28:Number = (_local27.x - _local11.x); var _local29:Number = (_local27.y - _local11.y); var _local30:Number = Math.sqrt(((_local28 * _local28) + (_local29 * _local29))); _local28 = (_local28 / _local30); _local29 = (_local29 / _local30); _local7 = (_local15 - _local11.x); _local8 = (_local16 - _local11.y); var _local31:Number = ((_local7 * _local28) + (_local8 * _local29)); _local6 = _arg1.points[0]; if (_local31 <= 0){ _local32 = _local11.x; _local33 = _local11.y; _local6.id.features.incidentEdge = b2_nullFeature; _local6.id.features.incidentVertex = _local25; } else { if (_local31 >= _local30){ _local32 = _local27.x; _local33 = _local27.y; _local6.id.features.incidentEdge = b2_nullFeature; _local6.id.features.incidentVertex = _local26; } else { _local32 = ((_local28 * _local31) + _local11.x); _local33 = ((_local29 * _local31) + _local11.y); _local6.id.features.incidentEdge = _local18; _local6.id.features.incidentVertex = b2_nullFeature; }; }; _local7 = (_local15 - _local32); _local8 = (_local16 - _local33); _local17 = Math.sqrt(((_local7 * _local7) + (_local8 * _local8))); _local7 = (_local7 / _local17); _local8 = (_local8 / _local17); if (_local17 > _local20){ return; }; _arg1.pointCount = 1; _local12 = _arg3.R; _arg1.normal.x = ((_local12.col1.x * _local7) + (_local12.col2.x * _local8)); _arg1.normal.y = ((_local12.col1.y * _local7) + (_local12.col2.y * _local8)); _local9 = (_local13 - (_local20 * _arg1.normal.x)); _local10 = (_local14 - (_local20 * _arg1.normal.y)); _local7 = (_local9 - _arg3.position.x); _local8 = (_local10 - _arg3.position.y); _local12 = _arg3.R; _local6.localPoint1.x = ((_local7 * _local12.col1.x) + (_local8 * _local12.col1.y)); _local6.localPoint1.y = ((_local7 * _local12.col2.x) + (_local8 * _local12.col2.y)); _local7 = (_local9 - _arg5.position.x); _local8 = (_local10 - _arg5.position.y); _local12 = _arg5.R; _local6.localPoint2.x = ((_local7 * _local12.col1.x) + (_local8 * _local12.col1.y)); _local6.localPoint2.y = ((_local7 * _local12.col2.x) + (_local8 * _local12.col2.y)); _local6.separation = (_local17 - _local20); _local6.id.features.referenceEdge = 0; _local6.id.features.flip = 0; } } }//package Box2D.Collision
Section 62
//b2ContactID (Box2D.Collision.b2ContactID) package Box2D.Collision { public class b2ContactID { public var _key:uint; public var features:Features; public function b2ContactID(){ features = new Features(); super(); features._m_id = this; } public function Set(_arg1:b2ContactID):void{ key = _arg1._key; } public function Copy():b2ContactID{ var _local1:b2ContactID = new b2ContactID(); _local1.key = key; return (_local1); } public function set key(_arg1:uint):void{ _key = _arg1; features._referenceEdge = (_key & 0xFF); features._incidentEdge = (((_key & 0xFF00) >> 8) & 0xFF); features._incidentVertex = (((_key & 0xFF0000) >> 16) & 0xFF); features._flip = (((_key & 4278190080) >> 24) & 0xFF); } public function get key():uint{ return (_key); } } }//package Box2D.Collision
Section 63
//b2ContactPoint (Box2D.Collision.b2ContactPoint) package Box2D.Collision { import Box2D.Collision.Shapes.*; import Box2D.Common.Math.*; public class b2ContactPoint { public var friction:Number; public var separation:Number; public var normal:b2Vec2; public var position:b2Vec2; public var restitution:Number; public var shape1:b2Shape; public var shape2:b2Shape; public var id:b2ContactID; public var velocity:b2Vec2; public function b2ContactPoint(){ position = new b2Vec2(); velocity = new b2Vec2(); normal = new b2Vec2(); id = new b2ContactID(); super(); } } }//package Box2D.Collision
Section 64
//b2Distance (Box2D.Collision.b2Distance) package Box2D.Collision { import Box2D.Collision.Shapes.*; import Box2D.Common.Math.*; import Box2D.Common.*; public class b2Distance { private static var s_p2s:Array = [new b2Vec2(), new b2Vec2(), new b2Vec2()]; private static var s_p1s:Array = [new b2Vec2(), new b2Vec2(), new b2Vec2()]; private static var s_points:Array = [new b2Vec2(), new b2Vec2(), new b2Vec2()]; private static var gPoint:b2Point = new b2Point(); public static var g_GJK_Iterations:int = 0; public static function InPoints(_arg1:b2Vec2, _arg2:Array, _arg3:int):Boolean{ var _local6:b2Vec2; var _local7:Number; var _local8:Number; var _local9:Number; var _local10:Number; var _local4:Number = (100 * Number.MIN_VALUE); var _local5:int; while (_local5 < _arg3) { _local6 = _arg2[_local5]; _local7 = Math.abs((_arg1.x - _local6.x)); _local8 = Math.abs((_arg1.y - _local6.y)); _local9 = Math.max(Math.abs(_arg1.x), Math.abs(_local6.x)); _local10 = Math.max(Math.abs(_arg1.y), Math.abs(_local6.y)); if ((((_local7 < (_local4 * (_local9 + 1)))) && ((_local8 < (_local4 * (_local10 + 1)))))){ return (true); }; _local5++; }; return (false); } public static function DistanceGeneric(_arg1:b2Vec2, _arg2:b2Vec2, _arg3, _arg4:b2XForm, _arg5, _arg6:b2XForm):Number{ var _local7:b2Vec2; var _local15:Number; var _local16:Number; var _local17:b2Vec2; var _local18:b2Vec2; var _local19:Number; var _local20:Number; var _local21:Number; var _local22:Number; var _local23:int; var _local8:Array = s_p1s; var _local9:Array = s_p2s; var _local10:Array = s_points; var _local11:int; _arg1.SetV(_arg3.GetFirstVertex(_arg4)); _arg2.SetV(_arg5.GetFirstVertex(_arg6)); var _local12:Number = 0; var _local13 = 20; var _local14:int; while (_local14 < _local13) { _local15 = (_arg2.x - _arg1.x); _local16 = (_arg2.y - _arg1.y); _local17 = _arg3.Support(_arg4, _local15, _local16); _local18 = _arg5.Support(_arg6, -(_local15), -(_local16)); _local12 = ((_local15 * _local15) + (_local16 * _local16)); _local19 = (_local18.x - _local17.x); _local20 = (_local18.y - _local17.y); _local21 = ((_local15 * _local19) + (_local16 * _local20)); if ((_local12 - _local21) <= (0.01 * _local12)){ if (_local11 == 0){ _arg1.SetV(_local17); _arg2.SetV(_local18); }; g_GJK_Iterations = _local14; return (Math.sqrt(_local12)); }; switch (_local11){ case 0: _local7 = _local8[0]; _local7.SetV(_local17); _local7 = _local9[0]; _local7.SetV(_local18); _local7 = _local10[0]; _local7.x = _local19; _local7.y = _local20; _arg1.SetV(_local8[0]); _arg2.SetV(_local9[0]); _local11++; break; case 1: _local7 = _local8[1]; _local7.SetV(_local17); _local7 = _local9[1]; _local7.SetV(_local18); _local7 = _local10[1]; _local7.x = _local19; _local7.y = _local20; _local11 = ProcessTwo(_arg1, _arg2, _local8, _local9, _local10); break; case 2: _local7 = _local8[2]; _local7.SetV(_local17); _local7 = _local9[2]; _local7.SetV(_local18); _local7 = _local10[2]; _local7.x = _local19; _local7.y = _local20; _local11 = ProcessThree(_arg1, _arg2, _local8, _local9, _local10); break; }; if (_local11 == 3){ g_GJK_Iterations = _local14; return (0); }; _local22 = -(Number.MAX_VALUE); _local23 = 0; while (_local23 < _local11) { _local7 = _local10[_local23]; _local22 = b2Math.b2Max(_local22, ((_local7.x * _local7.x) + (_local7.y * _local7.y))); _local23++; }; if ((((_local11 == 3)) || ((_local12 <= ((100 * Number.MIN_VALUE) * _local22))))){ g_GJK_Iterations = _local14; _local15 = (_arg2.x - _arg1.x); _local16 = (_arg2.y - _arg1.y); _local12 = ((_local15 * _local15) + (_local16 * _local16)); return (Math.sqrt(_local12)); }; _local14++; }; g_GJK_Iterations = _local13; return (Math.sqrt(_local12)); } public static function DistanceCC(_arg1:b2Vec2, _arg2:b2Vec2, _arg3:b2CircleShape, _arg4:b2XForm, _arg5:b2CircleShape, _arg6:b2XForm):Number{ var _local7:b2Mat22; var _local8:b2Vec2; var _local19:Number; var _local20:Number; _local7 = _arg4.R; _local8 = _arg3.m_localPosition; var _local9:Number = (_arg4.position.x + ((_local7.col1.x * _local8.x) + (_local7.col2.x * _local8.y))); var _local10:Number = (_arg4.position.y + ((_local7.col1.y * _local8.x) + (_local7.col2.y * _local8.y))); _local7 = _arg6.R; _local8 = _arg5.m_localPosition; var _local11:Number = (_arg6.position.x + ((_local7.col1.x * _local8.x) + (_local7.col2.x * _local8.y))); var _local12:Number = (_arg6.position.y + ((_local7.col1.y * _local8.x) + (_local7.col2.y * _local8.y))); var _local13:Number = (_local11 - _local9); var _local14:Number = (_local12 - _local10); var _local15:Number = ((_local13 * _local13) + (_local14 * _local14)); var _local16:Number = (_arg3.m_radius - b2Settings.b2_toiSlop); var _local17:Number = (_arg5.m_radius - b2Settings.b2_toiSlop); var _local18:Number = (_local16 + _local17); if (_local15 > (_local18 * _local18)){ _local19 = Math.sqrt(_local15); _local13 = (_local13 / _local19); _local14 = (_local14 / _local19); _local20 = (_local19 - _local18); _arg1.x = (_local9 + (_local16 * _local13)); _arg1.y = (_local10 + (_local16 * _local14)); _arg2.x = (_local11 - (_local17 * _local13)); _arg2.y = (_local12 - (_local17 * _local14)); return (_local20); }; if (_local15 > (Number.MIN_VALUE * Number.MIN_VALUE)){ _local19 = Math.sqrt(_local15); _local13 = (_local13 / _local19); _local14 = (_local14 / _local19); _arg1.x = (_local9 + (_local16 * _local13)); _arg1.y = (_local10 + (_local16 * _local14)); _arg2.x = _arg1.x; _arg2.y = _arg1.y; return (0); }; _arg1.x = _local9; _arg1.y = _local10; _arg2.x = _arg1.x; _arg2.y = _arg1.y; return (0); } public static function ProcessThree(_arg1:b2Vec2, _arg2:b2Vec2, _arg3:Array, _arg4:Array, _arg5:Array):int{ var _local6:b2Vec2; var _local7:b2Vec2; var _local8:b2Vec2; var _local9:b2Vec2; var _local10:b2Vec2; var _local11:b2Vec2; var _local12:b2Vec2; var _local13:b2Vec2; var _local35:Number; _local6 = _arg5[0]; _local7 = _arg5[1]; _local8 = _arg5[2]; _local9 = _arg3[0]; _local10 = _arg3[1]; _local11 = _arg3[2]; _local12 = _arg4[0]; _local13 = _arg4[1]; var _local14:b2Vec2 = _arg4[2]; var _local15:Number = _local6.x; var _local16:Number = _local6.y; var _local17:Number = _local7.x; var _local18:Number = _local7.y; var _local19:Number = _local8.x; var _local20:Number = _local8.y; var _local21:Number = (_local17 - _local15); var _local22:Number = (_local18 - _local16); var _local23:Number = (_local19 - _local15); var _local24:Number = (_local20 - _local16); var _local25:Number = (_local19 - _local17); var _local26:Number = (_local20 - _local18); var _local27:Number = -(((_local15 * _local21) + (_local16 * _local22))); var _local28:Number = ((_local17 * _local21) + (_local18 * _local22)); var _local29:Number = -(((_local15 * _local23) + (_local16 * _local24))); var _local30:Number = ((_local19 * _local23) + (_local20 * _local24)); var _local31:Number = -(((_local17 * _local25) + (_local18 * _local26))); var _local32:Number = ((_local19 * _local25) + (_local20 * _local26)); if ((((_local30 <= 0)) && ((_local32 <= 0)))){ _arg1.SetV(_local11); _arg2.SetV(_local14); _local9.SetV(_local11); _local12.SetV(_local14); _local6.SetV(_local8); return (1); }; var _local33:Number = ((_local21 * _local24) - (_local22 * _local23)); var _local34:Number = (_local33 * ((_local15 * _local18) - (_local16 * _local17))); var _local36:Number = (_local33 * ((_local17 * _local20) - (_local18 * _local19))); if ((((((((_local36 <= 0)) && ((_local31 >= 0)))) && ((_local32 >= 0)))) && (((_local31 + _local32) > 0)))){ _local35 = (_local31 / (_local31 + _local32)); _arg1.x = (_local10.x + (_local35 * (_local11.x - _local10.x))); _arg1.y = (_local10.y + (_local35 * (_local11.y - _local10.y))); _arg2.x = (_local13.x + (_local35 * (_local14.x - _local13.x))); _arg2.y = (_local13.y + (_local35 * (_local14.y - _local13.y))); _local9.SetV(_local11); _local12.SetV(_local14); _local6.SetV(_local8); return (2); }; var _local37:Number = (_local33 * ((_local19 * _local16) - (_local20 * _local15))); if ((((((((_local37 <= 0)) && ((_local29 >= 0)))) && ((_local30 >= 0)))) && (((_local29 + _local30) > 0)))){ _local35 = (_local29 / (_local29 + _local30)); _arg1.x = (_local9.x + (_local35 * (_local11.x - _local9.x))); _arg1.y = (_local9.y + (_local35 * (_local11.y - _local9.y))); _arg2.x = (_local12.x + (_local35 * (_local14.x - _local12.x))); _arg2.y = (_local12.y + (_local35 * (_local14.y - _local12.y))); _local10.SetV(_local11); _local13.SetV(_local14); _local7.SetV(_local8); return (2); }; var _local38:Number = ((_local36 + _local37) + _local34); _local38 = (1 / _local38); var _local39:Number = (_local36 * _local38); var _local40:Number = (_local37 * _local38); var _local41:Number = ((1 - _local39) - _local40); _arg1.x = (((_local39 * _local9.x) + (_local40 * _local10.x)) + (_local41 * _local11.x)); _arg1.y = (((_local39 * _local9.y) + (_local40 * _local10.y)) + (_local41 * _local11.y)); _arg2.x = (((_local39 * _local12.x) + (_local40 * _local13.x)) + (_local41 * _local14.x)); _arg2.y = (((_local39 * _local12.y) + (_local40 * _local13.y)) + (_local41 * _local14.y)); return (3); } public static function DistancePC(_arg1:b2Vec2, _arg2:b2Vec2, _arg3:b2PolygonShape, _arg4:b2XForm, _arg5:b2CircleShape, _arg6:b2XForm):Number{ var _local7:b2Mat22; var _local8:b2Vec2; var _local12:Number; var _local13:Number; var _local14:Number; var _local9:b2Point = gPoint; _local8 = _arg5.m_localPosition; _local7 = _arg6.R; _local9.p.x = (_arg6.position.x + ((_local7.col1.x * _local8.x) + (_local7.col2.x * _local8.y))); _local9.p.y = (_arg6.position.y + ((_local7.col1.y * _local8.x) + (_local7.col2.y * _local8.y))); var _local10:Number = DistanceGeneric(_arg1, _arg2, _arg3, _arg4, _local9, b2Math.b2XForm_identity); var _local11:Number = (_arg5.m_radius - b2Settings.b2_toiSlop); if (_local10 > _local11){ _local10 = (_local10 - _local11); _local12 = (_arg2.x - _arg1.x); _local13 = (_arg2.y - _arg1.y); _local14 = Math.sqrt(((_local12 * _local12) + (_local13 * _local13))); _local12 = (_local12 / _local14); _local13 = (_local13 / _local14); _arg2.x = (_arg2.x - (_local11 * _local12)); _arg2.y = (_arg2.y - (_local11 * _local13)); } else { _local10 = 0; _arg2.x = _arg1.x; _arg2.y = _arg1.y; }; return (_local10); } public static function Distance(_arg1:b2Vec2, _arg2:b2Vec2, _arg3:b2Shape, _arg4:b2XForm, _arg5:b2Shape, _arg6:b2XForm):Number{ var _local7:int = _arg3.m_type; var _local8:int = _arg5.m_type; if ((((_local7 == b2Shape.e_circleShape)) && ((_local8 == b2Shape.e_circleShape)))){ return (DistanceCC(_arg1, _arg2, (_arg3 as b2CircleShape), _arg4, (_arg5 as b2CircleShape), _arg6)); }; if ((((_local7 == b2Shape.e_polygonShape)) && ((_local8 == b2Shape.e_circleShape)))){ return (DistancePC(_arg1, _arg2, (_arg3 as b2PolygonShape), _arg4, (_arg5 as b2CircleShape), _arg6)); }; if ((((_local7 == b2Shape.e_circleShape)) && ((_local8 == b2Shape.e_polygonShape)))){ return (DistancePC(_arg2, _arg1, (_arg5 as b2PolygonShape), _arg6, (_arg3 as b2CircleShape), _arg4)); }; if ((((_local7 == b2Shape.e_polygonShape)) && ((_local8 == b2Shape.e_polygonShape)))){ return (DistanceGeneric(_arg1, _arg2, (_arg3 as b2PolygonShape), _arg4, (_arg5 as b2PolygonShape), _arg6)); }; return (0); } public static function ProcessTwo(_arg1:b2Vec2, _arg2:b2Vec2, _arg3:Array, _arg4:Array, _arg5:Array):int{ var _local9:b2Vec2; var _local10:b2Vec2; var _local11:b2Vec2; var _local17:Number; var _local6:b2Vec2 = _arg5[0]; var _local7:b2Vec2 = _arg5[1]; var _local8:b2Vec2 = _arg3[0]; _local9 = _arg3[1]; _local10 = _arg4[0]; _local11 = _arg4[1]; var _local12:Number = -(_local7.x); var _local13:Number = -(_local7.y); var _local14:Number = (_local6.x - _local7.x); var _local15:Number = (_local6.y - _local7.y); var _local16:Number = Math.sqrt(((_local14 * _local14) + (_local15 * _local15))); _local14 = (_local14 / _local16); _local15 = (_local15 / _local16); _local17 = ((_local12 * _local14) + (_local13 * _local15)); if ((((_local17 <= 0)) || ((_local16 < Number.MIN_VALUE)))){ _arg1.SetV(_local9); _arg2.SetV(_local11); _local8.SetV(_local9); _local10.SetV(_local11); _local6.SetV(_local7); return (1); }; _local17 = (_local17 / _local16); _arg1.x = (_local9.x + (_local17 * (_local8.x - _local9.x))); _arg1.y = (_local9.y + (_local17 * (_local8.y - _local9.y))); _arg2.x = (_local11.x + (_local17 * (_local10.x - _local11.x))); _arg2.y = (_local11.y + (_local17 * (_local10.y - _local11.y))); return (2); } } }//package Box2D.Collision
Section 65
//b2Manifold (Box2D.Collision.b2Manifold) package Box2D.Collision { import Box2D.Common.Math.*; import Box2D.Common.*; public class b2Manifold { public var pointCount:int;// = 0 public var normal:b2Vec2; public var points:Array; public function b2Manifold(){ points = new Array(b2Settings.b2_maxManifoldPoints); var _local1:int; while (_local1 < b2Settings.b2_maxManifoldPoints) { points[_local1] = new b2ManifoldPoint(); _local1++; }; normal = new b2Vec2(); } public function Set(_arg1:b2Manifold):void{ pointCount = _arg1.pointCount; var _local2:int; while (_local2 < b2Settings.b2_maxManifoldPoints) { (points[_local2] as b2ManifoldPoint).Set(_arg1.points[_local2]); _local2++; }; normal.SetV(_arg1.normal); } public function Reset():void{ var _local1:int; while (_local1 < b2Settings.b2_maxManifoldPoints) { (points[_local1] as b2ManifoldPoint).Reset(); _local1++; }; normal.SetZero(); pointCount = 0; } } }//package Box2D.Collision
Section 66
//b2ManifoldPoint (Box2D.Collision.b2ManifoldPoint) package Box2D.Collision { import Box2D.Common.Math.*; public class b2ManifoldPoint { public var separation:Number; public var localPoint2:b2Vec2; public var normalImpulse:Number; public var tangentImpulse:Number; public var localPoint1:b2Vec2; public var id:b2ContactID; public function b2ManifoldPoint(){ localPoint1 = new b2Vec2(); localPoint2 = new b2Vec2(); id = new b2ContactID(); super(); } public function Set(_arg1:b2ManifoldPoint):void{ localPoint1.SetV(_arg1.localPoint1); localPoint2.SetV(_arg1.localPoint2); separation = _arg1.separation; normalImpulse = _arg1.normalImpulse; tangentImpulse = _arg1.tangentImpulse; id.key = _arg1.id.key; } public function Reset():void{ localPoint1.SetZero(); localPoint2.SetZero(); separation = 0; normalImpulse = 0; tangentImpulse = 0; id.key = 0; } } }//package Box2D.Collision
Section 67
//b2OBB (Box2D.Collision.b2OBB) package Box2D.Collision { import Box2D.Common.Math.*; public class b2OBB { public var R:b2Mat22; public var center:b2Vec2; public var extents:b2Vec2; public function b2OBB(){ R = new b2Mat22(); center = new b2Vec2(); extents = new b2Vec2(); super(); } } }//package Box2D.Collision
Section 68
//b2Pair (Box2D.Collision.b2Pair) package Box2D.Collision { import Box2D.Common.*; public class b2Pair { public var proxyId1:uint; public var userData;// = null public var proxyId2:uint; public var status:uint; public var next:uint; public static var e_pairFinal:uint = 4; public static var b2_tableMask:int = (b2_tableCapacity - 1); public static var e_pairRemoved:uint = 2; public static var b2_nullPair:uint = b2Settings.USHRT_MAX; public static var e_pairBuffered:uint = 1; public static var b2_nullProxy:uint = b2Settings.USHRT_MAX; public static var b2_tableCapacity:int = b2Settings.b2_maxPairs; public function SetBuffered():void{ status = (status | e_pairBuffered); } public function IsBuffered():Boolean{ return (((status & e_pairBuffered) == e_pairBuffered)); } public function IsFinal():Boolean{ return (((status & e_pairFinal) == e_pairFinal)); } public function ClearRemoved():void{ status = (status & ~(e_pairRemoved)); } public function SetFinal():void{ status = (status | e_pairFinal); } public function IsRemoved():Boolean{ return (((status & e_pairRemoved) == e_pairRemoved)); } public function ClearBuffered():void{ status = (status & ~(e_pairBuffered)); } public function SetRemoved():void{ status = (status | e_pairRemoved); } } }//package Box2D.Collision
Section 69
//b2PairCallback (Box2D.Collision.b2PairCallback) package Box2D.Collision { public class b2PairCallback { public function PairRemoved(_arg1, _arg2, _arg3):void{ } public function PairAdded(_arg1, _arg2){ return (null); } } }//package Box2D.Collision
Section 70
//b2PairManager (Box2D.Collision.b2PairManager) package Box2D.Collision { import Box2D.Common.Math.*; import Box2D.Common.*; public class b2PairManager { public var m_pairCount:int; public var m_pairBuffer:Array; public var m_hashTable:Array; public var m_callback:b2PairCallback; public var m_pairs:Array; public var m_pairBufferCount:int; public var m_broadPhase:b2BroadPhase; public var m_freePair:uint; public function b2PairManager(){ var _local1:uint; super(); m_hashTable = new Array(b2Pair.b2_tableCapacity); _local1 = 0; while (_local1 < b2Pair.b2_tableCapacity) { m_hashTable[_local1] = b2Pair.b2_nullPair; _local1++; }; m_pairs = new Array(b2Settings.b2_maxPairs); _local1 = 0; while (_local1 < b2Settings.b2_maxPairs) { m_pairs[_local1] = new b2Pair(); _local1++; }; m_pairBuffer = new Array(b2Settings.b2_maxPairs); _local1 = 0; while (_local1 < b2Settings.b2_maxPairs) { m_pairBuffer[_local1] = new b2BufferedPair(); _local1++; }; _local1 = 0; while (_local1 < b2Settings.b2_maxPairs) { m_pairs[_local1].proxyId1 = b2Pair.b2_nullProxy; m_pairs[_local1].proxyId2 = b2Pair.b2_nullProxy; m_pairs[_local1].userData = null; m_pairs[_local1].status = 0; m_pairs[_local1].next = (_local1 + 1); _local1++; }; m_pairs[int((b2Settings.b2_maxPairs - 1))].next = b2Pair.b2_nullPair; m_pairCount = 0; m_pairBufferCount = 0; } private function FindHash(_arg1:uint, _arg2:uint, _arg3:uint):b2Pair{ var _local4:b2Pair; var _local5:uint = m_hashTable[_arg3]; _local4 = m_pairs[_local5]; while (((!((_local5 == b2Pair.b2_nullPair))) && ((Equals(_local4, _arg1, _arg2) == false)))) { _local5 = _local4.next; _local4 = m_pairs[_local5]; }; if (_local5 == b2Pair.b2_nullPair){ return (null); }; return (_local4); } private function Find(_arg1:uint, _arg2:uint):b2Pair{ var _local4:uint; if (_arg1 > _arg2){ _local4 = _arg1; _arg1 = _arg2; _arg2 = _local4; }; var _local3:uint = (Hash(_arg1, _arg2) & b2Pair.b2_tableMask); return (FindHash(_arg1, _arg2, _local3)); } private function ValidateBuffer():void{ } public function Commit():void{ var _local1:b2BufferedPair; var _local2:int; var _local5:b2Pair; var _local6:b2Proxy; var _local7:b2Proxy; var _local3:int; var _local4:Array = m_broadPhase.m_proxyPool; _local2 = 0; while (_local2 < m_pairBufferCount) { _local1 = m_pairBuffer[_local2]; _local5 = Find(_local1.proxyId1, _local1.proxyId2); _local5.ClearBuffered(); _local6 = _local4[_local5.proxyId1]; _local7 = _local4[_local5.proxyId2]; if (_local5.IsRemoved()){ if (_local5.IsFinal() == true){ m_callback.PairRemoved(_local6.userData, _local7.userData, _local5.userData); }; _local1 = m_pairBuffer[_local3]; _local1.proxyId1 = _local5.proxyId1; _local1.proxyId2 = _local5.proxyId2; _local3++; } else { if (_local5.IsFinal() == false){ _local5.userData = m_callback.PairAdded(_local6.userData, _local7.userData); _local5.SetFinal(); }; }; _local2++; }; _local2 = 0; while (_local2 < _local3) { _local1 = m_pairBuffer[_local2]; RemovePair(_local1.proxyId1, _local1.proxyId2); _local2++; }; m_pairBufferCount = 0; if (b2BroadPhase.s_validate){ ValidateTable(); }; } public function RemoveBufferedPair(_arg1:int, _arg2:int):void{ var _local3:b2BufferedPair; var _local4:b2Pair = Find(_arg1, _arg2); if (_local4 == null){ return; }; if (_local4.IsBuffered() == false){ _local4.SetBuffered(); _local3 = m_pairBuffer[m_pairBufferCount]; _local3.proxyId1 = _local4.proxyId1; _local3.proxyId2 = _local4.proxyId2; m_pairBufferCount++; }; _local4.SetRemoved(); if (b2BroadPhase.s_validate){ ValidateBuffer(); }; } private function RemovePair(_arg1:uint, _arg2:uint){ var _local3:b2Pair; var _local7:uint; var _local8:uint; var _local9:*; if (_arg1 > _arg2){ _local7 = _arg1; _arg1 = _arg2; _arg2 = _local7; }; var _local4:uint = (Hash(_arg1, _arg2) & b2Pair.b2_tableMask); var _local5:uint = m_hashTable[_local4]; var _local6:b2Pair; while (_local5 != b2Pair.b2_nullPair) { if (Equals(m_pairs[_local5], _arg1, _arg2)){ _local8 = _local5; _local3 = m_pairs[_local5]; if (_local6){ _local6.next = _local3.next; } else { m_hashTable[_local4] = _local3.next; }; _local3 = m_pairs[_local8]; _local9 = _local3.userData; _local3.next = m_freePair; _local3.proxyId1 = b2Pair.b2_nullProxy; _local3.proxyId2 = b2Pair.b2_nullProxy; _local3.userData = null; _local3.status = 0; m_freePair = _local8; m_pairCount--; return (_local9); } else { _local6 = m_pairs[_local5]; _local5 = _local6.next; }; }; return (null); } public function Initialize(_arg1:b2BroadPhase, _arg2:b2PairCallback):void{ m_broadPhase = _arg1; m_callback = _arg2; } public function AddBufferedPair(_arg1:int, _arg2:int):void{ var _local3:b2BufferedPair; var _local4:b2Pair = AddPair(_arg1, _arg2); if (_local4.IsBuffered() == false){ _local4.SetBuffered(); _local3 = m_pairBuffer[m_pairBufferCount]; _local3.proxyId1 = _local4.proxyId1; _local3.proxyId2 = _local4.proxyId2; m_pairBufferCount++; }; _local4.ClearRemoved(); if (b2BroadPhase.s_validate){ ValidateBuffer(); }; } private function AddPair(_arg1:uint, _arg2:uint):b2Pair{ var _local6:uint; if (_arg1 > _arg2){ _local6 = _arg1; _arg1 = _arg2; _arg2 = _local6; }; var _local3:uint = (Hash(_arg1, _arg2) & b2Pair.b2_tableMask); var _local4 = FindHash(_arg1, _arg2, _local3); if (_local4 != null){ return (_local4); }; var _local5:uint = m_freePair; _local4 = m_pairs[_local5]; m_freePair = _local4.next; _local4.proxyId1 = _arg1; _local4.proxyId2 = _arg2; _local4.status = 0; _local4.userData = null; _local4.next = m_hashTable[_local3]; m_hashTable[_local3] = _local5; m_pairCount++; return (_local4); } private function ValidateTable():void{ } public static function EqualsPair(_arg1:b2BufferedPair, _arg2:b2BufferedPair):Boolean{ return ((((_arg1.proxyId1 == _arg2.proxyId1)) && ((_arg1.proxyId2 == _arg2.proxyId2)))); } public static function Hash(_arg1:uint, _arg2:uint):uint{ var _local3:uint = (((_arg2 << 16) & 4294901760) | _arg1); _local3 = (~(_local3) + ((_local3 << 15) & 4294934528)); _local3 = (_local3 ^ ((_local3 >> 12) & 1048575)); _local3 = (_local3 + ((_local3 << 2) & 4294967292)); _local3 = (_local3 ^ ((_local3 >> 4) & 268435455)); _local3 = (_local3 * 2057); _local3 = (_local3 ^ ((_local3 >> 16) & 0xFFFF)); return (_local3); } public static function Equals(_arg1:b2Pair, _arg2:uint, _arg3:uint):Boolean{ return ((((_arg1.proxyId1 == _arg2)) && ((_arg1.proxyId2 == _arg3)))); } } }//package Box2D.Collision
Section 71
//b2Point (Box2D.Collision.b2Point) package Box2D.Collision { import Box2D.Common.Math.*; public class b2Point { public var p:b2Vec2; public function b2Point(){ p = new b2Vec2(); super(); } public function GetFirstVertex(_arg1:b2XForm):b2Vec2{ return (p); } public function Support(_arg1:b2XForm, _arg2:Number, _arg3:Number):b2Vec2{ return (p); } } }//package Box2D.Collision
Section 72
//b2Proxy (Box2D.Collision.b2Proxy) package Box2D.Collision { public class b2Proxy { public var overlapCount:uint; public var userData;// = null public var lowerBounds:Array; public var upperBounds:Array; public var timeStamp:uint; public function b2Proxy(){ lowerBounds = [uint(0), uint(0)]; upperBounds = [uint(0), uint(0)]; super(); } public function GetNext():uint{ return (lowerBounds[0]); } public function IsValid():Boolean{ return (!((overlapCount == b2BroadPhase.b2_invalid))); } public function SetNext(_arg1:uint):void{ lowerBounds[0] = (_arg1 & 0xFFFF); } } }//package Box2D.Collision
Section 73
//b2Segment (Box2D.Collision.b2Segment) package Box2D.Collision { import Box2D.Common.Math.*; import Box2D.Common.*; public class b2Segment { public var p1:b2Vec2; public var p2:b2Vec2; public function b2Segment(){ p1 = new b2Vec2(); p2 = new b2Vec2(); super(); } public function TestSegment(_arg1:Array, _arg2:b2Vec2, _arg3:b2Segment, _arg4:Number):Boolean{ var _local14:Number; var _local15:Number; var _local16:Number; var _local17:Number; var _local18:Number; var _local5:b2Vec2 = _arg3.p1; var _local6:Number = (_arg3.p2.x - _local5.x); var _local7:Number = (_arg3.p2.y - _local5.y); var _local8:Number = (p2.x - p1.x); var _local9:Number = (p2.y - p1.y); var _local10:Number = _local9; var _local11:Number = -(_local8); var _local12:Number = (100 * Number.MIN_VALUE); var _local13:Number = -(((_local6 * _local10) + (_local7 * _local11))); if (_local13 > _local12){ _local14 = (_local5.x - p1.x); _local15 = (_local5.y - p1.y); _local16 = ((_local14 * _local10) + (_local15 * _local11)); if ((((0 <= _local16)) && ((_local16 <= (_arg4 * _local13))))){ _local17 = ((-(_local6) * _local15) + (_local7 * _local14)); if (((((-(_local12) * _local13) <= _local17)) && ((_local17 <= (_local13 * (1 + _local12)))))){ _local16 = (_local16 / _local13); _local18 = Math.sqrt(((_local10 * _local10) + (_local11 * _local11))); _local10 = (_local10 / _local18); _local11 = (_local11 / _local18); _arg1[0] = _local16; _arg2.Set(_local10, _local11); return (true); }; }; }; return (false); } } }//package Box2D.Collision
Section 74
//b2TimeOfImpact (Box2D.Collision.b2TimeOfImpact) package Box2D.Collision { import Box2D.Collision.Shapes.*; import Box2D.Common.Math.*; import Box2D.Common.*; public class b2TimeOfImpact { public static var s_xf1:b2XForm = new b2XForm(); public static var s_xf2:b2XForm = new b2XForm(); public static var s_p1:b2Vec2 = new b2Vec2(); public static var s_p2:b2Vec2 = new b2Vec2(); public static function TimeOfImpact(_arg1:b2Shape, _arg2:b2Sweep, _arg3:b2Shape, _arg4:b2Sweep):Number{ var _local5:Number; var _local6:Number; var _local25:Number; var _local26:b2XForm; var _local27:b2XForm; var _local28:Number; var _local29:Number; var _local30:Number; var _local31:Number; var _local7:Number = _arg1.m_sweepRadius; var _local8:Number = _arg3.m_sweepRadius; var _local9:Number = _arg2.t0; var _local10:Number = (_arg2.c.x - _arg2.c0.x); var _local11:Number = (_arg2.c.y - _arg2.c0.y); var _local12:Number = (_arg4.c.x - _arg4.c0.x); var _local13:Number = (_arg4.c.y - _arg4.c0.y); var _local14:Number = (_arg2.a - _arg2.a0); var _local15:Number = (_arg4.a - _arg4.a0); var _local16:Number = 0; var _local17:b2Vec2 = s_p1; var _local18:b2Vec2 = s_p2; var _local19 = 20; var _local20:int; var _local21:Number = 0; var _local22:Number = 0; var _local23:Number = 0; var _local24:Number = 0; while (true) { _local25 = (((1 - _local16) * _local9) + _local16); _local26 = s_xf1; _local27 = s_xf2; _arg2.GetXForm(_local26, _local25); _arg4.GetXForm(_local27, _local25); _local23 = b2Distance.Distance(_local17, _local18, _arg1, _local26, _arg3, _local27); if (_local20 == 0){ if (_local23 > (2 * b2Settings.b2_toiSlop)){ _local24 = (1.5 * b2Settings.b2_toiSlop); } else { _local5 = (0.05 * b2Settings.b2_toiSlop); _local6 = (_local23 - (0.5 * b2Settings.b2_toiSlop)); _local24 = ((_local5 > _local6)) ? _local5 : _local6; }; }; if (((((_local23 - _local24) < (0.05 * b2Settings.b2_toiSlop))) || ((_local20 == _local19)))){ break; }; _local21 = (_local18.x - _local17.x); _local22 = (_local18.y - _local17.y); _local28 = Math.sqrt(((_local21 * _local21) + (_local22 * _local22))); _local21 = (_local21 / _local28); _local22 = (_local22 / _local28); _local29 = ((((_local21 * (_local10 - _local12)) + (_local22 * (_local11 - _local13))) + (((_local14 < 0)) ? -(_local14) : _local14 * _local7)) + (((_local15 < 0)) ? -(_local15) : _local15 * _local8)); if (_local29 == 0){ _local16 = 1; break; }; _local30 = ((_local23 - _local24) / _local29); _local31 = (_local16 + _local30); if ((((_local31 < 0)) || ((1 < _local31)))){ _local16 = 1; break; }; if (_local31 < ((1 + (100 * Number.MIN_VALUE)) * _local16)){ break; }; _local16 = _local31; _local20++; }; return (_local16); } } }//package Box2D.Collision
Section 75
//ClipVertex (Box2D.Collision.ClipVertex) package Box2D.Collision { import Box2D.Common.Math.*; public class ClipVertex { public var id:b2ContactID; public var v:b2Vec2; public function ClipVertex(){ v = new b2Vec2(); id = new b2ContactID(); super(); } } }//package Box2D.Collision
Section 76
//Features (Box2D.Collision.Features) package Box2D.Collision { public class Features { public var _referenceEdge:int; public var _incidentEdge:int; public var _flip:int; public var _incidentVertex:int; public var _m_id:b2ContactID; public function get referenceEdge():int{ return (_referenceEdge); } public function set incidentVertex(_arg1:int):void{ _incidentVertex = _arg1; _m_id._key = ((_m_id._key & 4278255615) | ((_incidentVertex << 16) & 0xFF0000)); } public function get flip():int{ return (_flip); } public function get incidentEdge():int{ return (_incidentEdge); } public function set referenceEdge(_arg1:int):void{ _referenceEdge = _arg1; _m_id._key = ((_m_id._key & 4294967040) | (_referenceEdge & 0xFF)); } public function get incidentVertex():int{ return (_incidentVertex); } public function set flip(_arg1:int):void{ _flip = _arg1; _m_id._key = ((_m_id._key & 0xFFFFFF) | ((_flip << 24) & 4278190080)); } public function set incidentEdge(_arg1:int):void{ _incidentEdge = _arg1; _m_id._key = ((_m_id._key & 4294902015) | ((_incidentEdge << 8) & 0xFF00)); } } }//package Box2D.Collision
Section 77
//b2Mat22 (Box2D.Common.Math.b2Mat22) package Box2D.Common.Math { public class b2Mat22 { public var col1:b2Vec2; public var col2:b2Vec2; public function b2Mat22(_arg1:Number=0, _arg2:b2Vec2=null, _arg3:b2Vec2=null){ var _local4:Number; var _local5:Number; col1 = new b2Vec2(); col2 = new b2Vec2(); super(); if (((!((_arg2 == null))) && (!((_arg3 == null))))){ col1.SetV(_arg2); col2.SetV(_arg3); } else { _local4 = Math.cos(_arg1); _local5 = Math.sin(_arg1); col1.x = _local4; col2.x = -(_local5); col1.y = _local5; col2.y = _local4; }; } public function SetIdentity():void{ col1.x = 1; col2.x = 0; col1.y = 0; col2.y = 1; } public function SetVV(_arg1:b2Vec2, _arg2:b2Vec2):void{ col1.SetV(_arg1); col2.SetV(_arg2); } public function Set(_arg1:Number):void{ var _local2:Number; _local2 = Math.cos(_arg1); var _local3:Number = Math.sin(_arg1); col1.x = _local2; col2.x = -(_local3); col1.y = _local3; col2.y = _local2; } public function SetZero():void{ col1.x = 0; col2.x = 0; col1.y = 0; col2.y = 0; } public function SetM(_arg1:b2Mat22):void{ col1.SetV(_arg1.col1); col2.SetV(_arg1.col2); } public function AddM(_arg1:b2Mat22):void{ col1.x = (col1.x + _arg1.col1.x); col1.y = (col1.y + _arg1.col1.y); col2.x = (col2.x + _arg1.col2.x); col2.y = (col2.y + _arg1.col2.y); } public function Abs():void{ col1.Abs(); col2.Abs(); } public function Copy():b2Mat22{ return (new b2Mat22(0, col1, col2)); } public function Invert(_arg1:b2Mat22):b2Mat22{ var _local2:Number; var _local4:Number; var _local6:Number; _local2 = col1.x; var _local3:Number = col2.x; _local4 = col1.y; var _local5:Number = col2.y; _local6 = ((_local2 * _local5) - (_local3 * _local4)); _local6 = (1 / _local6); _arg1.col1.x = (_local6 * _local5); _arg1.col2.x = (-(_local6) * _local3); _arg1.col1.y = (-(_local6) * _local4); _arg1.col2.y = (_local6 * _local2); return (_arg1); } public function GetAngle():Number{ return (Math.atan2(col1.y, col1.x)); } public function Solve(_arg1:b2Vec2, _arg2:Number, _arg3:Number):b2Vec2{ var _local4:Number = col1.x; var _local5:Number = col2.x; var _local6:Number = col1.y; var _local7:Number = col2.y; var _local8:Number = ((_local4 * _local7) - (_local5 * _local6)); _local8 = (1 / _local8); _arg1.x = (_local8 * ((_local7 * _arg2) - (_local5 * _arg3))); _arg1.y = (_local8 * ((_local4 * _arg3) - (_local6 * _arg2))); return (_arg1); } } }//package Box2D.Common.Math
Section 78
//b2Math (Box2D.Common.Math.b2Math) package Box2D.Common.Math { public class b2Math { public static const b2Mat22_identity:b2Mat22 = new b2Mat22(0, new b2Vec2(1, 0), new b2Vec2(0, 1)); public static const b2XForm_identity:b2XForm = new b2XForm(b2Vec2_zero, b2Mat22_identity); public static const b2Vec2_zero:b2Vec2 = new b2Vec2(0, 0); public static function b2CrossVF(_arg1:b2Vec2, _arg2:Number):b2Vec2{ var _local3:b2Vec2 = new b2Vec2((_arg2 * _arg1.y), (-(_arg2) * _arg1.x)); return (_local3); } public static function AddVV(_arg1:b2Vec2, _arg2:b2Vec2):b2Vec2{ var _local3:b2Vec2 = new b2Vec2((_arg1.x + _arg2.x), (_arg1.y + _arg2.y)); return (_local3); } public static function b2IsValid(_arg1:Number):Boolean{ return (isFinite(_arg1)); } public static function b2MinV(_arg1:b2Vec2, _arg2:b2Vec2):b2Vec2{ var _local3:b2Vec2 = new b2Vec2(b2Min(_arg1.x, _arg2.x), b2Min(_arg1.y, _arg2.y)); return (_local3); } public static function b2MulX(_arg1:b2XForm, _arg2:b2Vec2):b2Vec2{ var _local3:b2Vec2; _local3 = b2MulMV(_arg1.R, _arg2); _local3.x = (_local3.x + _arg1.position.x); _local3.y = (_local3.y + _arg1.position.y); return (_local3); } public static function b2DistanceSquared(_arg1:b2Vec2, _arg2:b2Vec2):Number{ var _local3:Number = (_arg1.x - _arg2.x); var _local4:Number = (_arg1.y - _arg2.y); return (((_local3 * _local3) + (_local4 * _local4))); } public static function b2Swap(_arg1:Array, _arg2:Array):void{ var _local3:* = _arg1[0]; _arg1[0] = _arg2[0]; _arg2[0] = _local3; } public static function b2AbsM(_arg1:b2Mat22):b2Mat22{ var _local2:b2Mat22 = new b2Mat22(0, b2AbsV(_arg1.col1), b2AbsV(_arg1.col2)); return (_local2); } public static function SubtractVV(_arg1:b2Vec2, _arg2:b2Vec2):b2Vec2{ var _local3:b2Vec2 = new b2Vec2((_arg1.x - _arg2.x), (_arg1.y - _arg2.y)); return (_local3); } public static function b2MulXT(_arg1:b2XForm, _arg2:b2Vec2):b2Vec2{ var _local3:b2Vec2; var _local4:Number; _local3 = SubtractVV(_arg2, _arg1.position); _local4 = ((_local3.x * _arg1.R.col1.x) + (_local3.y * _arg1.R.col1.y)); _local3.y = ((_local3.x * _arg1.R.col2.x) + (_local3.y * _arg1.R.col2.y)); _local3.x = _local4; return (_local3); } public static function b2Abs(_arg1:Number):Number{ return (((_arg1 > 0)) ? _arg1 : -(_arg1)); } public static function b2Clamp(_arg1:Number, _arg2:Number, _arg3:Number):Number{ return (b2Max(_arg2, b2Min(_arg1, _arg3))); } public static function b2AbsV(_arg1:b2Vec2):b2Vec2{ var _local2:b2Vec2 = new b2Vec2(b2Abs(_arg1.x), b2Abs(_arg1.y)); return (_local2); } public static function MulFV(_arg1:Number, _arg2:b2Vec2):b2Vec2{ var _local3:b2Vec2 = new b2Vec2((_arg1 * _arg2.x), (_arg1 * _arg2.y)); return (_local3); } public static function b2CrossVV(_arg1:b2Vec2, _arg2:b2Vec2):Number{ return (((_arg1.x * _arg2.y) - (_arg1.y * _arg2.x))); } public static function b2Dot(_arg1:b2Vec2, _arg2:b2Vec2):Number{ return (((_arg1.x * _arg2.x) + (_arg1.y * _arg2.y))); } public static function b2CrossFV(_arg1:Number, _arg2:b2Vec2):b2Vec2{ var _local3:b2Vec2 = new b2Vec2((-(_arg1) * _arg2.y), (_arg1 * _arg2.x)); return (_local3); } public static function AddMM(_arg1:b2Mat22, _arg2:b2Mat22):b2Mat22{ var _local3:b2Mat22 = new b2Mat22(0, AddVV(_arg1.col1, _arg2.col1), AddVV(_arg1.col2, _arg2.col2)); return (_local3); } public static function b2Distance(_arg1:b2Vec2, _arg2:b2Vec2):Number{ var _local3:Number = (_arg1.x - _arg2.x); var _local4:Number = (_arg1.y - _arg2.y); return (Math.sqrt(((_local3 * _local3) + (_local4 * _local4)))); } public static function b2MulTMM(_arg1:b2Mat22, _arg2:b2Mat22):b2Mat22{ var _local3:b2Vec2 = new b2Vec2(b2Dot(_arg1.col1, _arg2.col1), b2Dot(_arg1.col2, _arg2.col1)); var _local4:b2Vec2 = new b2Vec2(b2Dot(_arg1.col1, _arg2.col2), b2Dot(_arg1.col2, _arg2.col2)); var _local5:b2Mat22 = new b2Mat22(0, _local3, _local4); return (_local5); } public static function b2MaxV(_arg1:b2Vec2, _arg2:b2Vec2):b2Vec2{ var _local3:b2Vec2 = new b2Vec2(b2Max(_arg1.x, _arg2.x), b2Max(_arg1.y, _arg2.y)); return (_local3); } public static function b2IsPowerOfTwo(_arg1:uint):Boolean{ var _local2:Boolean = (((_arg1 > 0)) && (((_arg1 & (_arg1 - 1)) == 0))); return (_local2); } public static function b2ClampV(_arg1:b2Vec2, _arg2:b2Vec2, _arg3:b2Vec2):b2Vec2{ return (b2MaxV(_arg2, b2MinV(_arg1, _arg3))); } public static function b2RandomRange(_arg1:Number, _arg2:Number):Number{ var _local3:Number = Math.random(); _local3 = (((_arg2 - _arg1) * _local3) + _arg1); return (_local3); } public static function b2MulTMV(_arg1:b2Mat22, _arg2:b2Vec2):b2Vec2{ var _local3:b2Vec2 = new b2Vec2(b2Dot(_arg2, _arg1.col1), b2Dot(_arg2, _arg1.col2)); return (_local3); } public static function b2Min(_arg1:Number, _arg2:Number):Number{ return (((_arg1 < _arg2)) ? _arg1 : _arg2); } public static function b2Random():Number{ return (((Math.random() * 2) - 1)); } public static function b2MulMM(_arg1:b2Mat22, _arg2:b2Mat22):b2Mat22{ var _local3:b2Mat22 = new b2Mat22(0, b2MulMV(_arg1, _arg2.col1), b2MulMV(_arg1, _arg2.col2)); return (_local3); } public static function b2NextPowerOfTwo(_arg1:uint):uint{ _arg1 = (_arg1 | ((_arg1 >> 1) & 2147483647)); _arg1 = (_arg1 | ((_arg1 >> 2) & 1073741823)); _arg1 = (_arg1 | ((_arg1 >> 4) & 268435455)); _arg1 = (_arg1 | ((_arg1 >> 8) & 0xFFFFFF)); _arg1 = (_arg1 | ((_arg1 >> 16) & 0xFFFF)); return ((_arg1 + 1)); } public static function b2Max(_arg1:Number, _arg2:Number):Number{ return (((_arg1 > _arg2)) ? _arg1 : _arg2); } public static function b2MulMV(_arg1:b2Mat22, _arg2:b2Vec2):b2Vec2{ var _local3:b2Vec2 = new b2Vec2(((_arg1.col1.x * _arg2.x) + (_arg1.col2.x * _arg2.y)), ((_arg1.col1.y * _arg2.x) + (_arg1.col2.y * _arg2.y))); return (_local3); } } }//package Box2D.Common.Math
Section 79
//b2Sweep (Box2D.Common.Math.b2Sweep) package Box2D.Common.Math { public class b2Sweep { public var localCenter:b2Vec2; public var a:Number; public var c:b2Vec2; public var a0:Number; public var c0:b2Vec2; public var t0:Number; public function b2Sweep(){ localCenter = new b2Vec2(); c0 = new b2Vec2(); c = new b2Vec2(); super(); } public function Advance(_arg1:Number):void{ var _local2:Number; if ((((t0 < _arg1)) && (((1 - t0) > Number.MIN_VALUE)))){ _local2 = ((_arg1 - t0) / (1 - t0)); c0.x = (((1 - _local2) * c0.x) + (_local2 * c.x)); c0.y = (((1 - _local2) * c0.y) + (_local2 * c.y)); a0 = (((1 - _local2) * a0) + (_local2 * a)); t0 = _arg1; }; } public function GetXForm(_arg1:b2XForm, _arg2:Number):void{ var _local4:Number; var _local5:Number; if ((1 - t0) > Number.MIN_VALUE){ _local4 = ((_arg2 - t0) / (1 - t0)); _arg1.position.x = (((1 - _local4) * c0.x) + (_local4 * c.x)); _arg1.position.y = (((1 - _local4) * c0.y) + (_local4 * c.y)); _local5 = (((1 - _local4) * a0) + (_local4 * a)); _arg1.R.Set(_local5); } else { _arg1.position.SetV(c); _arg1.R.Set(a); }; var _local3:b2Mat22 = _arg1.R; _arg1.position.x = (_arg1.position.x - ((_local3.col1.x * localCenter.x) + (_local3.col2.x * localCenter.y))); _arg1.position.y = (_arg1.position.y - ((_local3.col1.y * localCenter.x) + (_local3.col2.y * localCenter.y))); } } }//package Box2D.Common.Math
Section 80
//b2Vec2 (Box2D.Common.Math.b2Vec2) package Box2D.Common.Math { public class b2Vec2 { public var y:Number; public var x:Number; public function b2Vec2(_arg1:Number=0, _arg2:Number=0):void{ x = _arg1; y = _arg2; } public function Add(_arg1:b2Vec2):void{ x = (x + _arg1.x); y = (y + _arg1.y); } public function Set(_arg1:Number=0, _arg2:Number=0):void{ x = _arg1; y = _arg2; } public function Multiply(_arg1:Number):void{ x = (x * _arg1); y = (y * _arg1); } public function Length():Number{ return (Math.sqrt(((x * x) + (y * y)))); } public function LengthSquared():Number{ return (((x * x) + (y * y))); } public function MulM(_arg1:b2Mat22):void{ var _local2:Number = x; x = ((_arg1.col1.x * _local2) + (_arg1.col2.x * y)); y = ((_arg1.col1.y * _local2) + (_arg1.col2.y * y)); } public function SetZero():void{ x = 0; y = 0; } public function MinV(_arg1:b2Vec2):void{ x = ((x < _arg1.x)) ? x : _arg1.x; y = ((y < _arg1.y)) ? y : _arg1.y; } public function toString():String{ return ((((("[b2Vec2 x=\"" + x) + "\" y=\"") + y) + "\"]")); } public function Normalize():Number{ var _local1:Number = Math.sqrt(((x * x) + (y * y))); if (_local1 < Number.MIN_VALUE){ return (0); }; var _local2:Number = (1 / _local1); x = (x * _local2); y = (y * _local2); return (_local1); } public function CrossVF(_arg1:Number):void{ var _local2:Number = x; x = (_arg1 * y); y = (-(_arg1) * _local2); } public function MaxV(_arg1:b2Vec2):void{ x = ((x > _arg1.x)) ? x : _arg1.x; y = ((y > _arg1.y)) ? y : _arg1.y; } public function SetV(_arg1:b2Vec2):void{ x = _arg1.x; y = _arg1.y; } public function Negative():b2Vec2{ return (new b2Vec2(-(x), -(y))); } public function CrossFV(_arg1:Number):void{ var _local2:Number = x; x = (-(_arg1) * y); y = (_arg1 * _local2); } public function Abs():void{ if (x < 0){ x = -(x); }; if (y < 0){ y = -(y); }; } public function Subtract(_arg1:b2Vec2):void{ x = (x - _arg1.x); y = (y - _arg1.y); } public function Copy():b2Vec2{ return (new b2Vec2(x, y)); } public function MulTM(_arg1:b2Mat22):void{ var _local2:Number = b2Math.b2Dot(this, _arg1.col1); y = b2Math.b2Dot(this, _arg1.col2); x = _local2; } public function IsValid():Boolean{ return (((b2Math.b2IsValid(x)) && (b2Math.b2IsValid(y)))); } public static function Make(_arg1:Number, _arg2:Number):b2Vec2{ return (new b2Vec2(_arg1, _arg2)); } } }//package Box2D.Common.Math
Section 81
//b2XForm (Box2D.Common.Math.b2XForm) package Box2D.Common.Math { public class b2XForm { public var position:b2Vec2; public var R:b2Mat22; public function b2XForm(_arg1:b2Vec2=null, _arg2:b2Mat22=null):void{ position = new b2Vec2(); R = new b2Mat22(); super(); if (_arg1){ position.SetV(_arg1); R.SetM(_arg2); }; } public function Initialize(_arg1:b2Vec2, _arg2:b2Mat22):void{ position.SetV(_arg1); R.SetM(_arg2); } public function Set(_arg1:b2XForm):void{ position.SetV(_arg1.position); R.SetM(_arg1.R); } public function SetIdentity():void{ position.SetZero(); R.SetIdentity(); } } }//package Box2D.Common.Math
Section 82
//b2Color (Box2D.Common.b2Color) package Box2D.Common { import Box2D.Common.Math.*; public class b2Color { private var _r:uint;// = 0 private var _g:uint;// = 0 private var _b:uint;// = 0 public function b2Color(_arg1:Number, _arg2:Number, _arg3:Number){ _r = uint((0xFF * b2Math.b2Clamp(_arg1, 0, 1))); _g = uint((0xFF * b2Math.b2Clamp(_arg2, 0, 1))); _b = uint((0xFF * b2Math.b2Clamp(_arg3, 0, 1))); } public function Set(_arg1:Number, _arg2:Number, _arg3:Number):void{ _r = uint((0xFF * b2Math.b2Clamp(_arg1, 0, 1))); _g = uint((0xFF * b2Math.b2Clamp(_arg2, 0, 1))); _b = uint((0xFF * b2Math.b2Clamp(_arg3, 0, 1))); } public function set b(_arg1:Number):void{ _b = uint((0xFF * b2Math.b2Clamp(_arg1, 0, 1))); } public function get color():uint{ return (((_r | (_g << 8)) | (_b << 16))); } public function set r(_arg1:Number):void{ _r = uint((0xFF * b2Math.b2Clamp(_arg1, 0, 1))); } public function set g(_arg1:Number):void{ _g = uint((0xFF * b2Math.b2Clamp(_arg1, 0, 1))); } } }//package Box2D.Common
Section 83
//b2Settings (Box2D.Common.b2Settings) package Box2D.Common { import Box2D.Common.Math.*; public class b2Settings { public static const b2_angularSleepTolerance:Number = 0.0111111111111111; public static const b2_linearSleepTolerance:Number = 0.01; public static const b2_angularSlop:Number = 0.0349065850398866; public static const b2_linearSlop:Number = 0.005; public static const b2_pi:Number = 3.14159265358979; public static const b2_maxProxies:int = 0x0200; public static const b2_maxAngularVelocitySquared:Number = 62500; public static const b2_maxPolygonVertices:int = 8; public static const b2_velocityThreshold:Number = 1; public static const b2_contactBaumgarte:Number = 0.2; public static const b2_maxPairs:int = 4096; public static const b2_maxTOIContactsPerIsland:int = 32; public static const b2_timeToSleep:Number = 0.5; public static const b2_maxManifoldPoints:int = 2; public static const b2_maxAngularVelocity:Number = 250; public static const b2_maxAngularCorrection:Number = 0.139626340159546; public static const USHRT_MAX:int = 0xFFFF; public static const b2_maxLinearVelocity:Number = 200; public static const b2_maxLinearCorrection:Number = 0.2; public static const b2_toiSlop:Number = 0.04; public static const b2_maxLinearVelocitySquared:Number = 40000; public static function b2Assert(_arg1:Boolean):void{ var _local2:b2Vec2; if (!_arg1){ _local2.x++; }; } } }//package Box2D.Common
Section 84
//b2CircleContact (Box2D.Dynamics.Contacts.b2CircleContact) package Box2D.Dynamics.Contacts { import Box2D.Collision.*; import Box2D.Collision.Shapes.*; import Box2D.Common.Math.*; import Box2D.Dynamics.*; import Box2D.Common.*; public class b2CircleContact extends b2Contact { private var m_manifolds:Array; public var m_manifold:b2Manifold; private var m0:b2Manifold; private static const s_evalCP:b2ContactPoint = new b2ContactPoint(); public function b2CircleContact(_arg1:b2Shape, _arg2:b2Shape){ m_manifolds = [new b2Manifold()]; m0 = new b2Manifold(); super(_arg1, _arg2); m_manifold = m_manifolds[0]; m_manifold.pointCount = 0; var _local3:b2ManifoldPoint = m_manifold.points[0]; _local3.normalImpulse = 0; _local3.tangentImpulse = 0; } override public function Evaluate(_arg1:b2ContactListener):void{ var _local2:b2Vec2; var _local3:b2Vec2; var _local4:b2ManifoldPoint; var _local8:b2ManifoldPoint; var _local5:b2Body = m_shape1.m_body; var _local6:b2Body = m_shape2.m_body; m0.Set(m_manifold); b2Collision.b2CollideCircles(m_manifold, (m_shape1 as b2CircleShape), _local5.m_xf, (m_shape2 as b2CircleShape), _local6.m_xf); var _local7:b2ContactPoint = s_evalCP; _local7.shape1 = m_shape1; _local7.shape2 = m_shape2; _local7.friction = m_friction; _local7.restitution = m_restitution; if (m_manifold.pointCount > 0){ m_manifoldCount = 1; _local8 = m_manifold.points[0]; if (m0.pointCount == 0){ _local8.normalImpulse = 0; _local8.tangentImpulse = 0; if (_arg1){ _local7.position = _local5.GetWorldPoint(_local8.localPoint1); _local2 = _local5.GetLinearVelocityFromLocalPoint(_local8.localPoint1); _local3 = _local6.GetLinearVelocityFromLocalPoint(_local8.localPoint2); _local7.velocity.Set((_local3.x - _local2.x), (_local3.y - _local2.y)); _local7.normal.SetV(m_manifold.normal); _local7.separation = _local8.separation; _local7.id.key = _local8.id._key; _arg1.Add(_local7); }; } else { _local4 = m0.points[0]; _local8.normalImpulse = _local4.normalImpulse; _local8.tangentImpulse = _local4.tangentImpulse; if (_arg1){ _local7.position = _local5.GetWorldPoint(_local8.localPoint1); _local2 = _local5.GetLinearVelocityFromLocalPoint(_local8.localPoint1); _local3 = _local6.GetLinearVelocityFromLocalPoint(_local8.localPoint2); _local7.velocity.Set((_local3.x - _local2.x), (_local3.y - _local2.y)); _local7.normal.SetV(m_manifold.normal); _local7.separation = _local8.separation; _local7.id.key = _local8.id._key; _arg1.Persist(_local7); }; }; } else { m_manifoldCount = 0; if ((((m0.pointCount > 0)) && (_arg1))){ _local4 = m0.points[0]; _local7.position = _local5.GetWorldPoint(_local4.localPoint1); _local2 = _local5.GetLinearVelocityFromLocalPoint(_local4.localPoint1); _local3 = _local6.GetLinearVelocityFromLocalPoint(_local4.localPoint2); _local7.velocity.Set((_local3.x - _local2.x), (_local3.y - _local2.y)); _local7.normal.SetV(m0.normal); _local7.separation = _local4.separation; _local7.id.key = _local4.id._key; _arg1.Remove(_local7); }; }; } override public function GetManifolds():Array{ return (m_manifolds); } public static function Destroy(_arg1:b2Contact, _arg2):void{ } public static function Create(_arg1:b2Shape, _arg2:b2Shape, _arg3):b2Contact{ return (new b2CircleContact(_arg1, _arg2)); } } }//package Box2D.Dynamics.Contacts
Section 85
//b2Contact (Box2D.Dynamics.Contacts.b2Contact) package Box2D.Dynamics.Contacts { import Box2D.Collision.*; import Box2D.Collision.Shapes.*; import Box2D.Common.Math.*; import Box2D.Dynamics.*; import Box2D.Common.*; public class b2Contact { public var m_shape1:b2Shape; public var m_shape2:b2Shape; public var m_prev:b2Contact; public var m_toi:Number; public var m_next:b2Contact; public var m_friction:Number; public var m_manifoldCount:int; public var m_node1:b2ContactEdge; public var m_node2:b2ContactEdge; public var m_restitution:Number; public var m_flags:uint; public static var e_toiFlag:uint = 8; public static var e_nonSolidFlag:uint = 1; public static var e_slowFlag:uint = 2; public static var e_islandFlag:uint = 4; public static var s_registers:Array; public static var s_initialized:Boolean = false; public function b2Contact(_arg1:b2Shape=null, _arg2:b2Shape=null){ m_node1 = new b2ContactEdge(); m_node2 = new b2ContactEdge(); super(); m_flags = 0; if (((!(_arg1)) || (!(_arg2)))){ m_shape1 = null; m_shape2 = null; return; }; if (((_arg1.IsSensor()) || (_arg2.IsSensor()))){ m_flags = (m_flags | e_nonSolidFlag); }; m_shape1 = _arg1; m_shape2 = _arg2; m_manifoldCount = 0; m_friction = Math.sqrt((m_shape1.m_friction * m_shape2.m_friction)); m_restitution = b2Math.b2Max(m_shape1.m_restitution, m_shape2.m_restitution); m_prev = null; m_next = null; m_node1.contact = null; m_node1.prev = null; m_node1.next = null; m_node1.other = null; m_node2.contact = null; m_node2.prev = null; m_node2.next = null; m_node2.other = null; } public function IsSolid():Boolean{ return (((m_flags & e_nonSolidFlag) == 0)); } public function GetShape1():b2Shape{ return (m_shape1); } public function GetShape2():b2Shape{ return (m_shape2); } public function GetNext():b2Contact{ return (m_next); } public function GetManifoldCount():int{ return (m_manifoldCount); } public function GetManifolds():Array{ return (null); } public function Update(_arg1:b2ContactListener):void{ var _local2:int = m_manifoldCount; Evaluate(_arg1); var _local3:int = m_manifoldCount; var _local4:b2Body = m_shape1.m_body; var _local5:b2Body = m_shape2.m_body; if ((((_local3 == 0)) && ((_local2 > 0)))){ _local4.WakeUp(); _local5.WakeUp(); }; if (((((((_local4.IsStatic()) || (_local4.IsBullet()))) || (_local5.IsStatic()))) || (_local5.IsBullet()))){ m_flags = (m_flags & ~(e_slowFlag)); } else { m_flags = (m_flags | e_slowFlag); }; } public function Evaluate(_arg1:b2ContactListener):void{ } public static function InitializeRegisters():void{ var _local2:int; s_registers = new Array(b2Shape.e_shapeTypeCount); var _local1:int; while (_local1 < b2Shape.e_shapeTypeCount) { s_registers[_local1] = new Array(b2Shape.e_shapeTypeCount); _local2 = 0; while (_local2 < b2Shape.e_shapeTypeCount) { s_registers[_local1][_local2] = new b2ContactRegister(); _local2++; }; _local1++; }; AddType(b2CircleContact.Create, b2CircleContact.Destroy, b2Shape.e_circleShape, b2Shape.e_circleShape); AddType(b2PolyAndCircleContact.Create, b2PolyAndCircleContact.Destroy, b2Shape.e_polygonShape, b2Shape.e_circleShape); AddType(b2PolygonContact.Create, b2PolygonContact.Destroy, b2Shape.e_polygonShape, b2Shape.e_polygonShape); } public static function Destroy(_arg1:b2Contact, _arg2):void{ if (_arg1.m_manifoldCount > 0){ _arg1.m_shape1.m_body.WakeUp(); _arg1.m_shape2.m_body.WakeUp(); }; var _local3:int = _arg1.m_shape1.m_type; var _local4:int = _arg1.m_shape2.m_type; var _local5:b2ContactRegister = s_registers[_local3][_local4]; var _local6:Function = _local5.destroyFcn; _local6(_arg1, _arg2); } public static function AddType(_arg1:Function, _arg2:Function, _arg3:int, _arg4:int):void{ s_registers[_arg3][_arg4].createFcn = _arg1; s_registers[_arg3][_arg4].destroyFcn = _arg2; s_registers[_arg3][_arg4].primary = true; if (_arg3 != _arg4){ s_registers[_arg4][_arg3].createFcn = _arg1; s_registers[_arg4][_arg3].destroyFcn = _arg2; s_registers[_arg4][_arg3].primary = false; }; } public static function Create(_arg1:b2Shape, _arg2:b2Shape, _arg3):b2Contact{ var _local8:b2Contact; var _local9:int; var _local10:b2Manifold; if (s_initialized == false){ InitializeRegisters(); s_initialized = true; }; var _local4:int = _arg1.m_type; var _local5:int = _arg2.m_type; var _local6:b2ContactRegister = s_registers[_local4][_local5]; var _local7:Function = _local6.createFcn; if (_local7 != null){ if (_local6.primary){ return (_local7(_arg1, _arg2, _arg3)); }; _local8 = _local7(_arg2, _arg1, _arg3); _local9 = 0; while (_local9 < _local8.m_manifoldCount) { _local10 = _local8.GetManifolds()[_local9]; _local8.GetManifolds()[_local9].normal = _local10.normal.Negative(); _local9++; }; return (_local8); //unresolved jump }; return (null); } } }//package Box2D.Dynamics.Contacts
Section 86
//b2ContactConstraint (Box2D.Dynamics.Contacts.b2ContactConstraint) package Box2D.Dynamics.Contacts { import Box2D.Collision.*; import Box2D.Common.Math.*; import Box2D.Dynamics.*; import Box2D.Common.*; public class b2ContactConstraint { public var points:Array; public var normal:b2Vec2; public var restitution:Number; public var body1:b2Body; public var manifold:b2Manifold; public var body2:b2Body; public var friction:Number; public var pointCount:int; public function b2ContactConstraint(){ normal = new b2Vec2(); super(); points = new Array(b2Settings.b2_maxManifoldPoints); var _local1:int; while (_local1 < b2Settings.b2_maxManifoldPoints) { points[_local1] = new b2ContactConstraintPoint(); _local1++; }; } } }//package Box2D.Dynamics.Contacts
Section 87
//b2ContactConstraintPoint (Box2D.Dynamics.Contacts.b2ContactConstraintPoint) package Box2D.Dynamics.Contacts { import Box2D.Common.Math.*; public class b2ContactConstraintPoint { public var r2:b2Vec2; public var separation:Number; public var positionImpulse:Number; public var normalImpulse:Number; public var tangentMass:Number; public var equalizedMass:Number; public var tangentImpulse:Number; public var localAnchor1:b2Vec2; public var localAnchor2:b2Vec2; public var normalMass:Number; public var velocityBias:Number; public var r1:b2Vec2; public function b2ContactConstraintPoint(){ localAnchor1 = new b2Vec2(); localAnchor2 = new b2Vec2(); r1 = new b2Vec2(); r2 = new b2Vec2(); super(); } } }//package Box2D.Dynamics.Contacts
Section 88
//b2ContactEdge (Box2D.Dynamics.Contacts.b2ContactEdge) package Box2D.Dynamics.Contacts { import Box2D.Dynamics.*; public class b2ContactEdge { public var other:b2Body; public var prev:b2ContactEdge; public var contact:b2Contact; public var next:b2ContactEdge; } }//package Box2D.Dynamics.Contacts
Section 89
//b2ContactRegister (Box2D.Dynamics.Contacts.b2ContactRegister) package Box2D.Dynamics.Contacts { public class b2ContactRegister { public var primary:Boolean; public var createFcn:Function; public var destroyFcn:Function; } }//package Box2D.Dynamics.Contacts
Section 90
//b2ContactResult (Box2D.Dynamics.Contacts.b2ContactResult) package Box2D.Dynamics.Contacts { import Box2D.Collision.*; import Box2D.Collision.Shapes.*; import Box2D.Common.Math.*; public class b2ContactResult { public var position:b2Vec2; public var shape1:b2Shape; public var shape2:b2Shape; public var normalImpulse:Number; public var normal:b2Vec2; public var tangentImpulse:Number; public var id:b2ContactID; public function b2ContactResult(){ position = new b2Vec2(); normal = new b2Vec2(); id = new b2ContactID(); super(); } } }//package Box2D.Dynamics.Contacts
Section 91
//b2ContactSolver (Box2D.Dynamics.Contacts.b2ContactSolver) package Box2D.Dynamics.Contacts { import Box2D.Collision.*; import Box2D.Common.Math.*; import Box2D.Dynamics.*; import Box2D.Common.*; public class b2ContactSolver { public var m_constraintCount:int; public var m_constraints:Array; public var m_allocator; public var m_step:b2TimeStep; public function b2ContactSolver(_arg1:b2TimeStep, _arg2:Array, _arg3:int, _arg4){ var _local5:b2Contact; var _local6:int; var _local7:b2Vec2; var _local8:b2Mat22; var _local10:b2Body; var _local11:b2Body; var _local12:int; var _local13:Array; var _local14:Number; var _local15:Number; var _local16:Number; var _local17:Number; var _local18:Number; var _local19:Number; var _local20:Number; var _local21:Number; var _local22:int; var _local23:b2Manifold; var _local24:Number; var _local25:Number; var _local26:b2ContactConstraint; var _local27:uint; var _local28:b2ManifoldPoint; var _local29:b2ContactConstraintPoint; var _local30:Number; var _local31:Number; var _local32:Number; var _local33:Number; var _local34:Number; var _local35:Number; var _local36:Number; var _local37:Number; var _local38:Number; var _local39:Number; var _local40:Number; var _local41:Number; var _local42:Number; var _local43:Number; var _local44:Number; var _local45:Number; var _local46:Number; var _local47:Number; m_step = new b2TimeStep(); m_constraints = new Array(); super(); m_step.dt = _arg1.dt; m_step.inv_dt = _arg1.inv_dt; m_step.maxIterations = _arg1.maxIterations; m_allocator = _arg4; m_constraintCount = 0; _local6 = 0; while (_local6 < _arg3) { _local5 = _arg2[_local6]; m_constraintCount = (m_constraintCount + _local5.m_manifoldCount); _local6++; }; _local6 = 0; while (_local6 < m_constraintCount) { m_constraints[_local6] = new b2ContactConstraint(); _local6++; }; var _local9:int; _local6 = 0; while (_local6 < _arg3) { _local5 = _arg2[_local6]; _local10 = _local5.m_shape1.m_body; _local11 = _local5.m_shape2.m_body; _local12 = _local5.m_manifoldCount; _local13 = _local5.GetManifolds(); _local14 = _local5.m_friction; _local15 = _local5.m_restitution; _local16 = _local10.m_linearVelocity.x; _local17 = _local10.m_linearVelocity.y; _local18 = _local11.m_linearVelocity.x; _local19 = _local11.m_linearVelocity.y; _local20 = _local10.m_angularVelocity; _local21 = _local11.m_angularVelocity; _local22 = 0; while (_local22 < _local12) { _local23 = _local13[_local22]; _local24 = _local23.normal.x; _local25 = _local23.normal.y; _local26 = m_constraints[_local9]; _local26.body1 = _local10; _local26.body2 = _local11; _local26.manifold = _local23; _local26.normal.x = _local24; _local26.normal.y = _local25; _local26.pointCount = _local23.pointCount; _local26.friction = _local14; _local26.restitution = _local15; _local27 = 0; while (_local27 < _local26.pointCount) { _local28 = _local23.points[_local27]; _local29 = _local26.points[_local27]; _local29.normalImpulse = _local28.normalImpulse; _local29.tangentImpulse = _local28.tangentImpulse; _local29.separation = _local28.separation; _local29.positionImpulse = 0; _local29.localAnchor1.SetV(_local28.localPoint1); _local29.localAnchor2.SetV(_local28.localPoint2); _local8 = _local10.m_xf.R; _local32 = (_local28.localPoint1.x - _local10.m_sweep.localCenter.x); _local33 = (_local28.localPoint1.y - _local10.m_sweep.localCenter.y); _local30 = ((_local8.col1.x * _local32) + (_local8.col2.x * _local33)); _local33 = ((_local8.col1.y * _local32) + (_local8.col2.y * _local33)); _local32 = _local30; _local29.r1.Set(_local32, _local33); _local8 = _local11.m_xf.R; _local34 = (_local28.localPoint2.x - _local11.m_sweep.localCenter.x); _local35 = (_local28.localPoint2.y - _local11.m_sweep.localCenter.y); _local30 = ((_local8.col1.x * _local34) + (_local8.col2.x * _local35)); _local35 = ((_local8.col1.y * _local34) + (_local8.col2.y * _local35)); _local34 = _local30; _local29.r2.Set(_local34, _local35); _local36 = ((_local32 * _local32) + (_local33 * _local33)); _local37 = ((_local34 * _local34) + (_local35 * _local35)); _local38 = ((_local32 * _local24) + (_local33 * _local25)); _local39 = ((_local34 * _local24) + (_local35 * _local25)); _local40 = (_local10.m_invMass + _local11.m_invMass); _local40 = (_local40 + ((_local10.m_invI * (_local36 - (_local38 * _local38))) + (_local11.m_invI * (_local37 - (_local39 * _local39))))); _local29.normalMass = (1 / _local40); _local41 = ((_local10.m_mass * _local10.m_invMass) + (_local11.m_mass * _local11.m_invMass)); _local41 = (_local41 + (((_local10.m_mass * _local10.m_invI) * (_local36 - (_local38 * _local38))) + ((_local11.m_mass * _local11.m_invI) * (_local37 - (_local39 * _local39))))); _local29.equalizedMass = (1 / _local41); _local42 = _local25; _local43 = -(_local24); _local44 = ((_local32 * _local42) + (_local33 * _local43)); _local45 = ((_local34 * _local42) + (_local35 * _local43)); _local46 = (_local10.m_invMass + _local11.m_invMass); _local46 = (_local46 + ((_local10.m_invI * (_local36 - (_local44 * _local44))) + (_local11.m_invI * (_local37 - (_local45 * _local45))))); _local29.tangentMass = (1 / _local46); _local29.velocityBias = 0; if (_local29.separation > 0){ _local29.velocityBias = (-60 * _local29.separation); }; _local30 = (((_local18 + (-(_local21) * _local35)) - _local16) - (-(_local20) * _local33)); _local31 = (((_local19 + (_local21 * _local34)) - _local17) - (_local20 * _local32)); _local47 = ((_local26.normal.x * _local30) + (_local26.normal.y * _local31)); if (_local47 < -(b2Settings.b2_velocityThreshold)){ _local29.velocityBias = (_local29.velocityBias + (-(_local26.restitution) * _local47)); }; _local27++; }; _local9++; _local22++; }; _local6++; }; } public function InitVelocityConstraints(_arg1:b2TimeStep):void{ var _local2:b2Vec2; var _local3:b2Vec2; var _local4:b2Mat22; var _local6:b2ContactConstraint; var _local7:b2Body; var _local8:b2Body; var _local9:Number; var _local10:Number; var _local11:Number; var _local12:Number; var _local13:Number; var _local14:Number; var _local15:Number; var _local16:Number; var _local17:Number; var _local18:int; var _local19:int; var _local20:b2ContactConstraintPoint; var _local21:Number; var _local22:Number; var _local23:b2ContactConstraintPoint; var _local5:int; while (_local5 < m_constraintCount) { _local6 = m_constraints[_local5]; _local7 = _local6.body1; _local8 = _local6.body2; _local9 = _local7.m_invMass; _local10 = _local7.m_invI; _local11 = _local8.m_invMass; _local12 = _local8.m_invI; _local13 = _local6.normal.x; _local14 = _local6.normal.y; _local15 = _local14; _local16 = -(_local13); if (_arg1.warmStarting){ _local19 = _local6.pointCount; _local18 = 0; while (_local18 < _local19) { _local20 = _local6.points[_local18]; _local6.points[_local18].normalImpulse = (_local20.normalImpulse * _arg1.dtRatio); _local20.tangentImpulse = (_local20.tangentImpulse * _arg1.dtRatio); _local21 = ((_local20.normalImpulse * _local13) + (_local20.tangentImpulse * _local15)); _local22 = ((_local20.normalImpulse * _local14) + (_local20.tangentImpulse * _local16)); _local7.m_angularVelocity = (_local7.m_angularVelocity - (_local10 * ((_local20.r1.x * _local22) - (_local20.r1.y * _local21)))); _local7.m_linearVelocity.x = (_local7.m_linearVelocity.x - (_local9 * _local21)); _local7.m_linearVelocity.y = (_local7.m_linearVelocity.y - (_local9 * _local22)); _local8.m_angularVelocity = (_local8.m_angularVelocity + (_local12 * ((_local20.r2.x * _local22) - (_local20.r2.y * _local21)))); _local8.m_linearVelocity.x = (_local8.m_linearVelocity.x + (_local11 * _local21)); _local8.m_linearVelocity.y = (_local8.m_linearVelocity.y + (_local11 * _local22)); _local18++; }; } else { _local19 = _local6.pointCount; _local18 = 0; while (_local18 < _local19) { _local23 = _local6.points[_local18]; _local23.normalImpulse = 0; _local23.tangentImpulse = 0; _local18++; }; }; _local5++; }; } public function SolvePositionConstraints(_arg1:Number):Boolean{ var _local3:b2Mat22; var _local4:b2Vec2; var _local6:b2ContactConstraint; var _local7:b2Body; var _local8:b2Body; var _local9:b2Vec2; var _local10:Number; var _local11:b2Vec2; var _local12:Number; var _local13:Number; var _local14:Number; var _local15:Number; var _local16:Number; var _local17:Number; var _local18:Number; var _local19:int; var _local20:int; var _local21:b2ContactConstraintPoint; var _local22:Number; var _local23:Number; var _local24:Number; var _local25:Number; var _local26:Number; var _local27:Number; var _local28:Number; var _local29:Number; var _local30:Number; var _local31:Number; var _local32:Number; var _local33:Number; var _local34:Number; var _local35:Number; var _local36:Number; var _local37:Number; var _local38:Number; var _local2:Number = 0; var _local5:int; while (_local5 < m_constraintCount) { _local6 = m_constraints[_local5]; _local7 = _local6.body1; _local8 = _local6.body2; _local9 = _local7.m_sweep.c; _local10 = _local7.m_sweep.a; _local11 = _local8.m_sweep.c; _local12 = _local8.m_sweep.a; _local13 = (_local7.m_mass * _local7.m_invMass); _local14 = (_local7.m_mass * _local7.m_invI); _local15 = (_local8.m_mass * _local8.m_invMass); _local16 = (_local8.m_mass * _local8.m_invI); _local17 = _local6.normal.x; _local18 = _local6.normal.y; _local19 = _local6.pointCount; _local20 = 0; while (_local20 < _local19) { _local21 = _local6.points[_local20]; _local3 = _local7.m_xf.R; _local4 = _local7.m_sweep.localCenter; _local22 = (_local21.localAnchor1.x - _local4.x); _local23 = (_local21.localAnchor1.y - _local4.y); _local26 = ((_local3.col1.x * _local22) + (_local3.col2.x * _local23)); _local23 = ((_local3.col1.y * _local22) + (_local3.col2.y * _local23)); _local22 = _local26; _local3 = _local8.m_xf.R; _local4 = _local8.m_sweep.localCenter; _local24 = (_local21.localAnchor2.x - _local4.x); _local25 = (_local21.localAnchor2.y - _local4.y); _local26 = ((_local3.col1.x * _local24) + (_local3.col2.x * _local25)); _local25 = ((_local3.col1.y * _local24) + (_local3.col2.y * _local25)); _local24 = _local26; _local27 = (_local9.x + _local22); _local28 = (_local9.y + _local23); _local29 = (_local11.x + _local24); _local30 = (_local11.y + _local25); _local31 = (_local29 - _local27); _local32 = (_local30 - _local28); _local33 = (((_local31 * _local17) + (_local32 * _local18)) + _local21.separation); _local2 = b2Math.b2Min(_local2, _local33); _local34 = (_arg1 * b2Math.b2Clamp((_local33 + b2Settings.b2_linearSlop), -(b2Settings.b2_maxLinearCorrection), 0)); _local35 = (-(_local21.equalizedMass) * _local34); _local36 = _local21.positionImpulse; _local21.positionImpulse = b2Math.b2Max((_local36 + _local35), 0); _local35 = (_local21.positionImpulse - _local36); _local37 = (_local35 * _local17); _local38 = (_local35 * _local18); _local9.x = (_local9.x - (_local13 * _local37)); _local9.y = (_local9.y - (_local13 * _local38)); _local10 = (_local10 - (_local14 * ((_local22 * _local38) - (_local23 * _local37)))); _local7.m_sweep.a = _local10; _local7.SynchronizeTransform(); _local11.x = (_local11.x + (_local15 * _local37)); _local11.y = (_local11.y + (_local15 * _local38)); _local12 = (_local12 + (_local16 * ((_local24 * _local38) - (_local25 * _local37)))); _local8.m_sweep.a = _local12; _local8.SynchronizeTransform(); _local20++; }; _local5++; }; return ((_local2 >= (-1.5 * b2Settings.b2_linearSlop))); } public function SolveVelocityConstraints():void{ var _local1:int; var _local2:b2ContactConstraintPoint; var _local3:Number; var _local4:Number; var _local5:Number; var _local6:Number; var _local7:Number; var _local8:Number; var _local9:Number; var _local10:Number; var _local11:Number; var _local12:Number; var _local13:Number; var _local14:Number; var _local15:Number; var _local16:Number; var _local17:b2Mat22; var _local18:b2Vec2; var _local20:b2ContactConstraint; var _local21:b2Body; var _local22:b2Body; var _local23:Number; var _local24:Number; var _local25:b2Vec2; var _local26:b2Vec2; var _local27:Number; var _local28:Number; var _local29:Number; var _local30:Number; var _local31:Number; var _local32:Number; var _local33:Number; var _local34:Number; var _local35:Number; var _local36:Number; var _local37:int; var _local38:Number; var _local19:int; while (_local19 < m_constraintCount) { _local20 = m_constraints[_local19]; _local21 = _local20.body1; _local22 = _local20.body2; _local23 = _local21.m_angularVelocity; _local24 = _local22.m_angularVelocity; _local25 = _local21.m_linearVelocity; _local26 = _local22.m_linearVelocity; _local27 = _local21.m_invMass; _local28 = _local21.m_invI; _local29 = _local22.m_invMass; _local30 = _local22.m_invI; _local31 = _local20.normal.x; _local32 = _local20.normal.y; _local33 = _local32; _local34 = -(_local31); _local35 = _local20.friction; _local37 = _local20.pointCount; _local1 = 0; while (_local1 < _local37) { _local2 = _local20.points[_local1]; _local7 = (((_local26.x + (-(_local24) * _local2.r2.y)) - _local25.x) - (-(_local23) * _local2.r1.y)); _local8 = (((_local26.y + (_local24 * _local2.r2.x)) - _local25.y) - (_local23 * _local2.r1.x)); _local9 = ((_local7 * _local31) + (_local8 * _local32)); _local11 = (-(_local2.normalMass) * (_local9 - _local2.velocityBias)); _local10 = ((_local7 * _local33) + (_local8 * _local34)); _local12 = (_local2.tangentMass * -(_local10)); _local13 = b2Math.b2Max((_local2.normalImpulse + _local11), 0); _local11 = (_local13 - _local2.normalImpulse); _local38 = (_local35 * _local2.normalImpulse); _local14 = b2Math.b2Clamp((_local2.tangentImpulse + _local12), -(_local38), _local38); _local12 = (_local14 - _local2.tangentImpulse); _local15 = ((_local11 * _local31) + (_local12 * _local33)); _local16 = ((_local11 * _local32) + (_local12 * _local34)); _local25.x = (_local25.x - (_local27 * _local15)); _local25.y = (_local25.y - (_local27 * _local16)); _local23 = (_local23 - (_local28 * ((_local2.r1.x * _local16) - (_local2.r1.y * _local15)))); _local26.x = (_local26.x + (_local29 * _local15)); _local26.y = (_local26.y + (_local29 * _local16)); _local24 = (_local24 + (_local30 * ((_local2.r2.x * _local16) - (_local2.r2.y * _local15)))); _local2.normalImpulse = _local13; _local2.tangentImpulse = _local14; _local1++; }; _local21.m_angularVelocity = _local23; _local22.m_angularVelocity = _local24; _local19++; }; } public function FinalizeVelocityConstraints():void{ var _local2:b2ContactConstraint; var _local3:b2Manifold; var _local4:int; var _local5:b2ManifoldPoint; var _local6:b2ContactConstraintPoint; var _local1:int; while (_local1 < m_constraintCount) { _local2 = m_constraints[_local1]; _local3 = _local2.manifold; _local4 = 0; while (_local4 < _local2.pointCount) { _local5 = _local3.points[_local4]; _local6 = _local2.points[_local4]; _local5.normalImpulse = _local6.normalImpulse; _local5.tangentImpulse = _local6.tangentImpulse; _local4++; }; _local1++; }; } } }//package Box2D.Dynamics.Contacts
Section 92
//b2NullContact (Box2D.Dynamics.Contacts.b2NullContact) package Box2D.Dynamics.Contacts { import Box2D.Dynamics.*; public class b2NullContact extends b2Contact { override public function Evaluate(_arg1:b2ContactListener):void{ } override public function GetManifolds():Array{ return (null); } } }//package Box2D.Dynamics.Contacts
Section 93
//b2PolyAndCircleContact (Box2D.Dynamics.Contacts.b2PolyAndCircleContact) package Box2D.Dynamics.Contacts { import Box2D.Collision.*; import Box2D.Collision.Shapes.*; import Box2D.Common.Math.*; import Box2D.Dynamics.*; import Box2D.Common.*; public class b2PolyAndCircleContact extends b2Contact { private var m_manifolds:Array; public var m_manifold:b2Manifold; private var m0:b2Manifold; private static const s_evalCP:b2ContactPoint = new b2ContactPoint(); public function b2PolyAndCircleContact(_arg1:b2Shape, _arg2:b2Shape){ m_manifolds = [new b2Manifold()]; m0 = new b2Manifold(); super(_arg1, _arg2); m_manifold = m_manifolds[0]; b2Settings.b2Assert((m_shape1.m_type == b2Shape.e_polygonShape)); b2Settings.b2Assert((m_shape2.m_type == b2Shape.e_circleShape)); m_manifold.pointCount = 0; var _local3:b2ManifoldPoint = m_manifold.points[0]; _local3.normalImpulse = 0; _local3.tangentImpulse = 0; } override public function Evaluate(_arg1:b2ContactListener):void{ var _local2:int; var _local3:b2Vec2; var _local4:b2Vec2; var _local5:b2ManifoldPoint; var _local10:b2ManifoldPoint; var _local11:Boolean; var _local12:uint; var _local13:int; var _local6:b2Body = m_shape1.m_body; var _local7:b2Body = m_shape2.m_body; m0.Set(m_manifold); b2Collision.b2CollidePolygonAndCircle(m_manifold, (m_shape1 as b2PolygonShape), _local6.m_xf, (m_shape2 as b2CircleShape), _local7.m_xf); var _local8:Array = [false, false]; var _local9:b2ContactPoint = s_evalCP; _local9.shape1 = m_shape1; _local9.shape2 = m_shape2; _local9.friction = m_friction; _local9.restitution = m_restitution; if (m_manifold.pointCount > 0){ _local2 = 0; while (_local2 < m_manifold.pointCount) { _local10 = m_manifold.points[_local2]; _local10.normalImpulse = 0; _local10.tangentImpulse = 0; _local11 = false; _local12 = _local10.id._key; _local13 = 0; while (_local13 < m0.pointCount) { if (_local8[_local13] == true){ } else { _local5 = m0.points[_local13]; if (_local5.id._key == _local12){ _local8[_local13] = true; _local10.normalImpulse = _local5.normalImpulse; _local10.tangentImpulse = _local5.tangentImpulse; _local11 = true; if (_arg1 != null){ _local9.position = _local6.GetWorldPoint(_local10.localPoint1); _local3 = _local6.GetLinearVelocityFromLocalPoint(_local10.localPoint1); _local4 = _local7.GetLinearVelocityFromLocalPoint(_local10.localPoint2); _local9.velocity.Set((_local4.x - _local3.x), (_local4.y - _local3.y)); _local9.normal.SetV(m_manifold.normal); _local9.separation = _local10.separation; _local9.id.key = _local12; _arg1.Persist(_local9); }; break; }; }; _local13++; }; if ((((_local11 == false)) && (!((_arg1 == null))))){ _local9.position = _local6.GetWorldPoint(_local10.localPoint1); _local3 = _local6.GetLinearVelocityFromLocalPoint(_local10.localPoint1); _local4 = _local7.GetLinearVelocityFromLocalPoint(_local10.localPoint2); _local9.velocity.Set((_local4.x - _local3.x), (_local4.y - _local3.y)); _local9.normal.SetV(m_manifold.normal); _local9.separation = _local10.separation; _local9.id.key = _local12; _arg1.Add(_local9); }; _local2++; }; m_manifoldCount = 1; } else { m_manifoldCount = 0; }; if (_arg1 == null){ return; }; _local2 = 0; while (_local2 < m0.pointCount) { if (_local8[_local2]){ } else { _local5 = m0.points[_local2]; _local9.position = _local6.GetWorldPoint(_local5.localPoint1); _local3 = _local6.GetLinearVelocityFromLocalPoint(_local5.localPoint1); _local4 = _local7.GetLinearVelocityFromLocalPoint(_local5.localPoint2); _local9.velocity.Set((_local4.x - _local3.x), (_local4.y - _local3.y)); _local9.normal.SetV(m0.normal); _local9.separation = _local5.separation; _local9.id.key = _local5.id._key; _arg1.Remove(_local9); }; _local2++; }; } override public function GetManifolds():Array{ return (m_manifolds); } public static function Destroy(_arg1:b2Contact, _arg2):void{ } public static function Create(_arg1:b2Shape, _arg2:b2Shape, _arg3):b2Contact{ return (new b2PolyAndCircleContact(_arg1, _arg2)); } } }//package Box2D.Dynamics.Contacts
Section 94
//b2PolygonContact (Box2D.Dynamics.Contacts.b2PolygonContact) package Box2D.Dynamics.Contacts { import Box2D.Collision.*; import Box2D.Collision.Shapes.*; import Box2D.Common.Math.*; import Box2D.Dynamics.*; import Box2D.Common.*; public class b2PolygonContact extends b2Contact { private var m_manifolds:Array; private var m0:b2Manifold; public var m_manifold:b2Manifold; private static const s_evalCP:b2ContactPoint = new b2ContactPoint(); public function b2PolygonContact(_arg1:b2Shape, _arg2:b2Shape):void{ m0 = new b2Manifold(); m_manifolds = [new b2Manifold()]; super(_arg1, _arg2); m_manifold = m_manifolds[0]; m_manifold.pointCount = 0; } override public function Evaluate(_arg1:b2ContactListener):void{ var _local2:b2Vec2; var _local3:b2Vec2; var _local4:b2ManifoldPoint; var _local7:b2ContactPoint; var _local8:int; var _local10:b2ManifoldPoint; var _local11:Boolean; var _local12:uint; var _local13:int; var _local5:b2Body = m_shape1.m_body; var _local6:b2Body = m_shape2.m_body; m0.Set(m_manifold); b2Collision.b2CollidePolygons(m_manifold, (m_shape1 as b2PolygonShape), _local5.m_xf, (m_shape2 as b2PolygonShape), _local6.m_xf); var _local9:Array = [false, false]; _local7 = s_evalCP; _local7.shape1 = m_shape1; _local7.shape2 = m_shape2; _local7.friction = m_friction; _local7.restitution = m_restitution; if (m_manifold.pointCount > 0){ _local8 = 0; while (_local8 < m_manifold.pointCount) { _local10 = m_manifold.points[_local8]; _local10.normalImpulse = 0; _local10.tangentImpulse = 0; _local11 = false; _local12 = _local10.id._key; _local13 = 0; while (_local13 < m0.pointCount) { if (_local9[_local13] == true){ } else { _local4 = m0.points[_local13]; if (_local4.id._key == _local12){ _local9[_local13] = true; _local10.normalImpulse = _local4.normalImpulse; _local10.tangentImpulse = _local4.tangentImpulse; _local11 = true; if (_arg1 != null){ _local7.position = _local5.GetWorldPoint(_local10.localPoint1); _local2 = _local5.GetLinearVelocityFromLocalPoint(_local10.localPoint1); _local3 = _local6.GetLinearVelocityFromLocalPoint(_local10.localPoint2); _local7.velocity.Set((_local3.x - _local2.x), (_local3.y - _local2.y)); _local7.normal.SetV(m_manifold.normal); _local7.separation = _local10.separation; _local7.id.key = _local12; _arg1.Persist(_local7); }; break; }; }; _local13++; }; if ((((_local11 == false)) && (!((_arg1 == null))))){ _local7.position = _local5.GetWorldPoint(_local10.localPoint1); _local2 = _local5.GetLinearVelocityFromLocalPoint(_local10.localPoint1); _local3 = _local6.GetLinearVelocityFromLocalPoint(_local10.localPoint2); _local7.velocity.Set((_local3.x - _local2.x), (_local3.y - _local2.y)); _local7.normal.SetV(m_manifold.normal); _local7.separation = _local10.separation; _local7.id.key = _local12; _arg1.Add(_local7); }; _local8++; }; m_manifoldCount = 1; } else { m_manifoldCount = 0; }; if (_arg1 == null){ return; }; _local8 = 0; while (_local8 < m0.pointCount) { if (_local9[_local8]){ } else { _local4 = m0.points[_local8]; _local7.position = _local5.GetWorldPoint(_local4.localPoint1); _local2 = _local5.GetLinearVelocityFromLocalPoint(_local4.localPoint1); _local3 = _local6.GetLinearVelocityFromLocalPoint(_local4.localPoint2); _local7.velocity.Set((_local3.x - _local2.x), (_local3.y - _local2.y)); _local7.normal.SetV(m0.normal); _local7.separation = _local4.separation; _local7.id.key = _local4.id._key; _arg1.Remove(_local7); }; _local8++; }; } override public function GetManifolds():Array{ return (m_manifolds); } public static function Destroy(_arg1:b2Contact, _arg2):void{ } public static function Create(_arg1:b2Shape, _arg2:b2Shape, _arg3):b2Contact{ return (new b2PolygonContact(_arg1, _arg2)); } } }//package Box2D.Dynamics.Contacts
Section 95
//b2DistanceJoint (Box2D.Dynamics.Joints.b2DistanceJoint) package Box2D.Dynamics.Joints { import Box2D.Common.Math.*; import Box2D.Dynamics.*; import Box2D.Common.*; public class b2DistanceJoint extends b2Joint { public var m_localAnchor1:b2Vec2; public var m_localAnchor2:b2Vec2; public var m_bias:Number; public var m_gamma:Number; public var m_u:b2Vec2; public var m_mass:Number; public var m_impulse:Number; public var m_dampingRatio:Number; public var m_frequencyHz:Number; public var m_length:Number; public function b2DistanceJoint(_arg1:b2DistanceJointDef){ var _local2:b2Mat22; var _local3:Number; var _local4:Number; m_localAnchor1 = new b2Vec2(); m_localAnchor2 = new b2Vec2(); m_u = new b2Vec2(); super(_arg1); m_localAnchor1.SetV(_arg1.localAnchor1); m_localAnchor2.SetV(_arg1.localAnchor2); m_length = _arg1.length; m_frequencyHz = _arg1.frequencyHz; m_dampingRatio = _arg1.dampingRatio; m_impulse = 0; m_gamma = 0; m_bias = 0; m_inv_dt = 0; } override public function GetAnchor1():b2Vec2{ return (m_body1.GetWorldPoint(m_localAnchor1)); } override public function GetAnchor2():b2Vec2{ return (m_body2.GetWorldPoint(m_localAnchor2)); } override public function InitVelocityConstraints(_arg1:b2TimeStep):void{ var _local2:b2Mat22; var _local3:Number; var _local4:b2Body; var _local5:b2Body; var _local6:Number; var _local8:Number; var _local14:Number; var _local15:Number; var _local16:Number; var _local17:Number; var _local18:Number; var _local19:Number; m_inv_dt = _arg1.inv_dt; _local4 = m_body1; _local5 = m_body2; _local2 = _local4.m_xf.R; _local6 = (m_localAnchor1.x - _local4.m_sweep.localCenter.x); var _local7:Number = (m_localAnchor1.y - _local4.m_sweep.localCenter.y); _local3 = ((_local2.col1.x * _local6) + (_local2.col2.x * _local7)); _local7 = ((_local2.col1.y * _local6) + (_local2.col2.y * _local7)); _local6 = _local3; _local2 = _local5.m_xf.R; _local8 = (m_localAnchor2.x - _local5.m_sweep.localCenter.x); var _local9:Number = (m_localAnchor2.y - _local5.m_sweep.localCenter.y); _local3 = ((_local2.col1.x * _local8) + (_local2.col2.x * _local9)); _local9 = ((_local2.col1.y * _local8) + (_local2.col2.y * _local9)); _local8 = _local3; m_u.x = (((_local5.m_sweep.c.x + _local8) - _local4.m_sweep.c.x) - _local6); m_u.y = (((_local5.m_sweep.c.y + _local9) - _local4.m_sweep.c.y) - _local7); var _local10:Number = Math.sqrt(((m_u.x * m_u.x) + (m_u.y * m_u.y))); if (_local10 > b2Settings.b2_linearSlop){ m_u.Multiply((1 / _local10)); } else { m_u.SetZero(); }; var _local11:Number = ((_local6 * m_u.y) - (_local7 * m_u.x)); var _local12:Number = ((_local8 * m_u.y) - (_local9 * m_u.x)); var _local13:Number = (((_local4.m_invMass + ((_local4.m_invI * _local11) * _local11)) + _local5.m_invMass) + ((_local5.m_invI * _local12) * _local12)); m_mass = (1 / _local13); if (m_frequencyHz > 0){ _local14 = (_local10 - m_length); _local15 = ((2 * Math.PI) * m_frequencyHz); _local16 = (((2 * m_mass) * m_dampingRatio) * _local15); _local17 = ((m_mass * _local15) * _local15); m_gamma = (1 / (_arg1.dt * (_local16 + (_arg1.dt * _local17)))); m_bias = (((_local14 * _arg1.dt) * _local17) * m_gamma); m_mass = (1 / (_local13 + m_gamma)); }; if (_arg1.warmStarting){ m_impulse = (m_impulse * _arg1.dtRatio); _local18 = (m_impulse * m_u.x); _local19 = (m_impulse * m_u.y); _local4.m_linearVelocity.x = (_local4.m_linearVelocity.x - (_local4.m_invMass * _local18)); _local4.m_linearVelocity.y = (_local4.m_linearVelocity.y - (_local4.m_invMass * _local19)); _local4.m_angularVelocity = (_local4.m_angularVelocity - (_local4.m_invI * ((_local6 * _local19) - (_local7 * _local18)))); _local5.m_linearVelocity.x = (_local5.m_linearVelocity.x + (_local5.m_invMass * _local18)); _local5.m_linearVelocity.y = (_local5.m_linearVelocity.y + (_local5.m_invMass * _local19)); _local5.m_angularVelocity = (_local5.m_angularVelocity + (_local5.m_invI * ((_local8 * _local19) - (_local9 * _local18)))); } else { m_impulse = 0; }; } override public function GetReactionTorque():Number{ return (0); } override public function GetReactionForce():b2Vec2{ var _local1:b2Vec2 = new b2Vec2(); _local1.SetV(m_u); _local1.Multiply((m_inv_dt * m_impulse)); return (_local1); } override public function SolvePositionConstraints():Boolean{ var _local1:b2Mat22; if (m_frequencyHz > 0){ return (true); }; var _local2:b2Body = m_body1; var _local3:b2Body = m_body2; _local1 = _local2.m_xf.R; var _local4:Number = (m_localAnchor1.x - _local2.m_sweep.localCenter.x); var _local5:Number = (m_localAnchor1.y - _local2.m_sweep.localCenter.y); var _local6:Number = ((_local1.col1.x * _local4) + (_local1.col2.x * _local5)); _local5 = ((_local1.col1.y * _local4) + (_local1.col2.y * _local5)); _local4 = _local6; _local1 = _local3.m_xf.R; var _local7:Number = (m_localAnchor2.x - _local3.m_sweep.localCenter.x); var _local8:Number = (m_localAnchor2.y - _local3.m_sweep.localCenter.y); _local6 = ((_local1.col1.x * _local7) + (_local1.col2.x * _local8)); _local8 = ((_local1.col1.y * _local7) + (_local1.col2.y * _local8)); _local7 = _local6; var _local9:Number = (((_local3.m_sweep.c.x + _local7) - _local2.m_sweep.c.x) - _local4); var _local10:Number = (((_local3.m_sweep.c.y + _local8) - _local2.m_sweep.c.y) - _local5); var _local11:Number = Math.sqrt(((_local9 * _local9) + (_local10 * _local10))); _local9 = (_local9 / _local11); _local10 = (_local10 / _local11); var _local12:Number = (_local11 - m_length); _local12 = b2Math.b2Clamp(_local12, -(b2Settings.b2_maxLinearCorrection), b2Settings.b2_maxLinearCorrection); var _local13:Number = (-(m_mass) * _local12); m_u.Set(_local9, _local10); var _local14:Number = (_local13 * m_u.x); var _local15:Number = (_local13 * m_u.y); _local2.m_sweep.c.x = (_local2.m_sweep.c.x - (_local2.m_invMass * _local14)); _local2.m_sweep.c.y = (_local2.m_sweep.c.y - (_local2.m_invMass * _local15)); _local2.m_sweep.a = (_local2.m_sweep.a - (_local2.m_invI * ((_local4 * _local15) - (_local5 * _local14)))); _local3.m_sweep.c.x = (_local3.m_sweep.c.x + (_local3.m_invMass * _local14)); _local3.m_sweep.c.y = (_local3.m_sweep.c.y + (_local3.m_invMass * _local15)); _local3.m_sweep.a = (_local3.m_sweep.a + (_local3.m_invI * ((_local7 * _local15) - (_local8 * _local14)))); _local2.SynchronizeTransform(); _local3.SynchronizeTransform(); return ((b2Math.b2Abs(_local12) < b2Settings.b2_linearSlop)); } override public function SolveVelocityConstraints(_arg1:b2TimeStep):void{ var _local2:b2Mat22; var _local3:b2Body = m_body1; var _local4:b2Body = m_body2; _local2 = _local3.m_xf.R; var _local5:Number = (m_localAnchor1.x - _local3.m_sweep.localCenter.x); var _local6:Number = (m_localAnchor1.y - _local3.m_sweep.localCenter.y); var _local7:Number = ((_local2.col1.x * _local5) + (_local2.col2.x * _local6)); _local6 = ((_local2.col1.y * _local5) + (_local2.col2.y * _local6)); _local5 = _local7; _local2 = _local4.m_xf.R; var _local8:Number = (m_localAnchor2.x - _local4.m_sweep.localCenter.x); var _local9:Number = (m_localAnchor2.y - _local4.m_sweep.localCenter.y); _local7 = ((_local2.col1.x * _local8) + (_local2.col2.x * _local9)); _local9 = ((_local2.col1.y * _local8) + (_local2.col2.y * _local9)); _local8 = _local7; var _local10:Number = (_local3.m_linearVelocity.x + (-(_local3.m_angularVelocity) * _local6)); var _local11:Number = (_local3.m_linearVelocity.y + (_local3.m_angularVelocity * _local5)); var _local12:Number = (_local4.m_linearVelocity.x + (-(_local4.m_angularVelocity) * _local9)); var _local13:Number = (_local4.m_linearVelocity.y + (_local4.m_angularVelocity * _local8)); var _local14:Number = ((m_u.x * (_local12 - _local10)) + (m_u.y * (_local13 - _local11))); var _local15:Number = (-(m_mass) * ((_local14 + m_bias) + (m_gamma * m_impulse))); m_impulse = (m_impulse + _local15); var _local16:Number = (_local15 * m_u.x); var _local17:Number = (_local15 * m_u.y); _local3.m_linearVelocity.x = (_local3.m_linearVelocity.x - (_local3.m_invMass * _local16)); _local3.m_linearVelocity.y = (_local3.m_linearVelocity.y - (_local3.m_invMass * _local17)); _local3.m_angularVelocity = (_local3.m_angularVelocity - (_local3.m_invI * ((_local5 * _local17) - (_local6 * _local16)))); _local4.m_linearVelocity.x = (_local4.m_linearVelocity.x + (_local4.m_invMass * _local16)); _local4.m_linearVelocity.y = (_local4.m_linearVelocity.y + (_local4.m_invMass * _local17)); _local4.m_angularVelocity = (_local4.m_angularVelocity + (_local4.m_invI * ((_local8 * _local17) - (_local9 * _local16)))); } } }//package Box2D.Dynamics.Joints
Section 96
//b2DistanceJointDef (Box2D.Dynamics.Joints.b2DistanceJointDef) package Box2D.Dynamics.Joints { import Box2D.Common.Math.*; import Box2D.Dynamics.*; public class b2DistanceJointDef extends b2JointDef { public var localAnchor1:b2Vec2; public var length:Number; public var dampingRatio:Number; public var localAnchor2:b2Vec2; public var frequencyHz:Number; public function b2DistanceJointDef(){ localAnchor1 = new b2Vec2(); localAnchor2 = new b2Vec2(); super(); type = b2Joint.e_distanceJoint; length = 1; frequencyHz = 0; dampingRatio = 0; } public function Initialize(_arg1:b2Body, _arg2:b2Body, _arg3:b2Vec2, _arg4:b2Vec2):void{ body1 = _arg1; body2 = _arg2; localAnchor1.SetV(body1.GetLocalPoint(_arg3)); localAnchor2.SetV(body2.GetLocalPoint(_arg4)); var _local5:Number = (_arg4.x - _arg3.x); var _local6:Number = (_arg4.y - _arg3.y); length = Math.sqrt(((_local5 * _local5) + (_local6 * _local6))); frequencyHz = 0; dampingRatio = 0; } } }//package Box2D.Dynamics.Joints
Section 97
//b2GearJoint (Box2D.Dynamics.Joints.b2GearJoint) package Box2D.Dynamics.Joints { import Box2D.Common.Math.*; import Box2D.Dynamics.*; import Box2D.Common.*; public class b2GearJoint extends b2Joint { public var m_ground2:b2Body; public var m_groundAnchor1:b2Vec2; public var m_groundAnchor2:b2Vec2; public var m_localAnchor1:b2Vec2; public var m_localAnchor2:b2Vec2; public var m_ratio:Number; public var m_revolute2:b2RevoluteJoint; public var m_force:Number; public var m_mass:Number; public var m_prismatic2:b2PrismaticJoint; public var m_ground1:b2Body; public var m_revolute1:b2RevoluteJoint; public var m_prismatic1:b2PrismaticJoint; public var m_constant:Number; public var m_J:b2Jacobian; public function b2GearJoint(_arg1:b2GearJointDef){ var _local4:Number; var _local5:Number; m_groundAnchor1 = new b2Vec2(); m_groundAnchor2 = new b2Vec2(); m_localAnchor1 = new b2Vec2(); m_localAnchor2 = new b2Vec2(); m_J = new b2Jacobian(); super(_arg1); var _local2:int = _arg1.joint1.m_type; var _local3:int = _arg1.joint2.m_type; m_revolute1 = null; m_prismatic1 = null; m_revolute2 = null; m_prismatic2 = null; m_ground1 = _arg1.joint1.m_body1; m_body1 = _arg1.joint1.m_body2; if (_local2 == b2Joint.e_revoluteJoint){ m_revolute1 = (_arg1.joint1 as b2RevoluteJoint); m_groundAnchor1.SetV(m_revolute1.m_localAnchor1); m_localAnchor1.SetV(m_revolute1.m_localAnchor2); _local4 = m_revolute1.GetJointAngle(); } else { m_prismatic1 = (_arg1.joint1 as b2PrismaticJoint); m_groundAnchor1.SetV(m_prismatic1.m_localAnchor1); m_localAnchor1.SetV(m_prismatic1.m_localAnchor2); _local4 = m_prismatic1.GetJointTranslation(); }; m_ground2 = _arg1.joint2.m_body1; m_body2 = _arg1.joint2.m_body2; if (_local3 == b2Joint.e_revoluteJoint){ m_revolute2 = (_arg1.joint2 as b2RevoluteJoint); m_groundAnchor2.SetV(m_revolute2.m_localAnchor1); m_localAnchor2.SetV(m_revolute2.m_localAnchor2); _local5 = m_revolute2.GetJointAngle(); } else { m_prismatic2 = (_arg1.joint2 as b2PrismaticJoint); m_groundAnchor2.SetV(m_prismatic2.m_localAnchor1); m_localAnchor2.SetV(m_prismatic2.m_localAnchor2); _local5 = m_prismatic2.GetJointTranslation(); }; m_ratio = _arg1.ratio; m_constant = (_local4 + (m_ratio * _local5)); m_force = 0; } override public function GetAnchor1():b2Vec2{ return (m_body1.GetWorldPoint(m_localAnchor1)); } override public function GetAnchor2():b2Vec2{ return (m_body2.GetWorldPoint(m_localAnchor2)); } override public function InitVelocityConstraints(_arg1:b2TimeStep):void{ var _local6:Number; var _local7:Number; var _local8:Number; var _local9:Number; var _local10:b2Mat22; var _local11:b2Vec2; var _local12:Number; var _local13:Number; var _local15:Number; var _local2:b2Body = m_ground1; var _local3:b2Body = m_ground2; var _local4:b2Body = m_body1; var _local5:b2Body = m_body2; var _local14:Number = 0; m_J.SetZero(); if (m_revolute1){ m_J.angular1 = -1; _local14 = (_local14 + _local4.m_invI); } else { _local10 = _local2.m_xf.R; _local11 = m_prismatic1.m_localXAxis1; _local6 = ((_local10.col1.x * _local11.x) + (_local10.col2.x * _local11.y)); _local7 = ((_local10.col1.y * _local11.x) + (_local10.col2.y * _local11.y)); _local10 = _local4.m_xf.R; _local8 = (m_localAnchor1.x - _local4.m_sweep.localCenter.x); _local9 = (m_localAnchor1.y - _local4.m_sweep.localCenter.y); _local13 = ((_local10.col1.x * _local8) + (_local10.col2.x * _local9)); _local9 = ((_local10.col1.y * _local8) + (_local10.col2.y * _local9)); _local8 = _local13; _local12 = ((_local8 * _local7) - (_local9 * _local6)); m_J.linear1.Set(-(_local6), -(_local7)); m_J.angular1 = -(_local12); _local14 = (_local14 + (_local4.m_invMass + ((_local4.m_invI * _local12) * _local12))); }; if (m_revolute2){ m_J.angular2 = -(m_ratio); _local14 = (_local14 + ((m_ratio * m_ratio) * _local5.m_invI)); } else { _local10 = _local3.m_xf.R; _local11 = m_prismatic2.m_localXAxis1; _local6 = ((_local10.col1.x * _local11.x) + (_local10.col2.x * _local11.y)); _local7 = ((_local10.col1.y * _local11.x) + (_local10.col2.y * _local11.y)); _local10 = _local5.m_xf.R; _local8 = (m_localAnchor2.x - _local5.m_sweep.localCenter.x); _local9 = (m_localAnchor2.y - _local5.m_sweep.localCenter.y); _local13 = ((_local10.col1.x * _local8) + (_local10.col2.x * _local9)); _local9 = ((_local10.col1.y * _local8) + (_local10.col2.y * _local9)); _local8 = _local13; _local12 = ((_local8 * _local7) - (_local9 * _local6)); m_J.linear2.Set((-(m_ratio) * _local6), (-(m_ratio) * _local7)); m_J.angular2 = (-(m_ratio) * _local12); _local14 = (_local14 + ((m_ratio * m_ratio) * (_local5.m_invMass + ((_local5.m_invI * _local12) * _local12)))); }; m_mass = (1 / _local14); if (_arg1.warmStarting){ _local15 = (_arg1.dt * m_force); _local4.m_linearVelocity.x = (_local4.m_linearVelocity.x + ((_local4.m_invMass * _local15) * m_J.linear1.x)); _local4.m_linearVelocity.y = (_local4.m_linearVelocity.y + ((_local4.m_invMass * _local15) * m_J.linear1.y)); _local4.m_angularVelocity = (_local4.m_angularVelocity + ((_local4.m_invI * _local15) * m_J.angular1)); _local5.m_linearVelocity.x = (_local5.m_linearVelocity.x + ((_local5.m_invMass * _local15) * m_J.linear2.x)); _local5.m_linearVelocity.y = (_local5.m_linearVelocity.y + ((_local5.m_invMass * _local15) * m_J.linear2.y)); _local5.m_angularVelocity = (_local5.m_angularVelocity + ((_local5.m_invI * _local15) * m_J.angular2)); } else { m_force = 0; }; } override public function GetReactionTorque():Number{ var _local1:b2Mat22 = m_body2.m_xf.R; var _local2:Number = (m_localAnchor1.x - m_body2.m_sweep.localCenter.x); var _local3:Number = (m_localAnchor1.y - m_body2.m_sweep.localCenter.y); var _local4:Number = ((_local1.col1.x * _local2) + (_local1.col2.x * _local3)); _local3 = ((_local1.col1.y * _local2) + (_local1.col2.y * _local3)); _local2 = _local4; _local4 = ((m_force * m_J.angular2) - ((_local2 * (m_force * m_J.linear2.y)) - (_local3 * (m_force * m_J.linear2.x)))); return (_local4); } override public function GetReactionForce():b2Vec2{ var _local1:b2Vec2 = new b2Vec2((m_force * m_J.linear2.x), (m_force * m_J.linear2.y)); return (_local1); } override public function SolvePositionConstraints():Boolean{ var _local4:Number; var _local5:Number; var _local1:Number = 0; var _local2:b2Body = m_body1; var _local3:b2Body = m_body2; if (m_revolute1){ _local4 = m_revolute1.GetJointAngle(); } else { _local4 = m_prismatic1.GetJointTranslation(); }; if (m_revolute2){ _local5 = m_revolute2.GetJointAngle(); } else { _local5 = m_prismatic2.GetJointTranslation(); }; var _local6:Number = (m_constant - (_local4 + (m_ratio * _local5))); var _local7:Number = (-(m_mass) * _local6); _local2.m_sweep.c.x = (_local2.m_sweep.c.x + ((_local2.m_invMass * _local7) * m_J.linear1.x)); _local2.m_sweep.c.y = (_local2.m_sweep.c.y + ((_local2.m_invMass * _local7) * m_J.linear1.y)); _local2.m_sweep.a = (_local2.m_sweep.a + ((_local2.m_invI * _local7) * m_J.angular1)); _local3.m_sweep.c.x = (_local3.m_sweep.c.x + ((_local3.m_invMass * _local7) * m_J.linear2.x)); _local3.m_sweep.c.y = (_local3.m_sweep.c.y + ((_local3.m_invMass * _local7) * m_J.linear2.y)); _local3.m_sweep.a = (_local3.m_sweep.a + ((_local3.m_invI * _local7) * m_J.angular2)); _local2.SynchronizeTransform(); _local3.SynchronizeTransform(); return ((_local1 < b2Settings.b2_linearSlop)); } public function GetRatio():Number{ return (m_ratio); } override public function SolveVelocityConstraints(_arg1:b2TimeStep):void{ var _local2:b2Body = m_body1; var _local3:b2Body = m_body2; var _local4:Number = m_J.Compute(_local2.m_linearVelocity, _local2.m_angularVelocity, _local3.m_linearVelocity, _local3.m_angularVelocity); var _local5:Number = ((-(_arg1.inv_dt) * m_mass) * _local4); m_force = (m_force + _local5); var _local6:Number = (_arg1.dt * _local5); _local2.m_linearVelocity.x = (_local2.m_linearVelocity.x + ((_local2.m_invMass * _local6) * m_J.linear1.x)); _local2.m_linearVelocity.y = (_local2.m_linearVelocity.y + ((_local2.m_invMass * _local6) * m_J.linear1.y)); _local2.m_angularVelocity = (_local2.m_angularVelocity + ((_local2.m_invI * _local6) * m_J.angular1)); _local3.m_linearVelocity.x = (_local3.m_linearVelocity.x + ((_local3.m_invMass * _local6) * m_J.linear2.x)); _local3.m_linearVelocity.y = (_local3.m_linearVelocity.y + ((_local3.m_invMass * _local6) * m_J.linear2.y)); _local3.m_angularVelocity = (_local3.m_angularVelocity + ((_local3.m_invI * _local6) * m_J.angular2)); } } }//package Box2D.Dynamics.Joints
Section 98
//b2GearJointDef (Box2D.Dynamics.Joints.b2GearJointDef) package Box2D.Dynamics.Joints { public class b2GearJointDef extends b2JointDef { public var joint1:b2Joint; public var joint2:b2Joint; public var ratio:Number; public function b2GearJointDef(){ type = b2Joint.e_gearJoint; joint1 = null; joint2 = null; ratio = 1; } } }//package Box2D.Dynamics.Joints
Section 99
//b2Jacobian (Box2D.Dynamics.Joints.b2Jacobian) package Box2D.Dynamics.Joints { import Box2D.Common.Math.*; public class b2Jacobian { public var linear1:b2Vec2; public var linear2:b2Vec2; public var angular1:Number; public var angular2:Number; public function b2Jacobian(){ linear1 = new b2Vec2(); linear2 = new b2Vec2(); super(); } public function Set(_arg1:b2Vec2, _arg2:Number, _arg3:b2Vec2, _arg4:Number):void{ linear1.SetV(_arg1); angular1 = _arg2; linear2.SetV(_arg3); angular2 = _arg4; } public function SetZero():void{ linear1.SetZero(); angular1 = 0; linear2.SetZero(); angular2 = 0; } public function Compute(_arg1:b2Vec2, _arg2:Number, _arg3:b2Vec2, _arg4:Number):Number{ return ((((((linear1.x * _arg1.x) + (linear1.y * _arg1.y)) + (angular1 * _arg2)) + ((linear2.x * _arg3.x) + (linear2.y * _arg3.y))) + (angular2 * _arg4))); } } }//package Box2D.Dynamics.Joints
Section 100
//b2Joint (Box2D.Dynamics.Joints.b2Joint) package Box2D.Dynamics.Joints { import Box2D.Common.Math.*; import Box2D.Dynamics.*; public class b2Joint { public var m_islandFlag:Boolean; public var m_body1:b2Body; public var m_prev:b2Joint; public var m_next:b2Joint; public var m_type:int; public var m_collideConnected:Boolean; public var m_node1:b2JointEdge; public var m_node2:b2JointEdge; public var m_inv_dt:Number; public var m_userData; public var m_body2:b2Body; public static const e_unknownJoint:int = 0; public static const e_inactiveLimit:int = 0; public static const e_atUpperLimit:int = 2; public static const e_atLowerLimit:int = 1; public static const e_gearJoint:int = 6; public static const e_revoluteJoint:int = 1; public static const e_equalLimits:int = 3; public static const e_distanceJoint:int = 3; public static const e_pulleyJoint:int = 4; public static const e_prismaticJoint:int = 2; public static const e_mouseJoint:int = 5; public function b2Joint(_arg1:b2JointDef){ m_node1 = new b2JointEdge(); m_node2 = new b2JointEdge(); super(); m_type = _arg1.type; m_prev = null; m_next = null; m_body1 = _arg1.body1; m_body2 = _arg1.body2; m_collideConnected = _arg1.collideConnected; m_islandFlag = false; m_userData = _arg1.userData; } public function GetBody2():b2Body{ return (m_body2); } public function GetAnchor1():b2Vec2{ return (null); } public function GetAnchor2():b2Vec2{ return (null); } public function GetNext():b2Joint{ return (m_next); } public function GetType():int{ return (m_type); } public function InitVelocityConstraints(_arg1:b2TimeStep):void{ } public function GetReactionTorque():Number{ return (0); } public function GetUserData(){ return (m_userData); } public function GetReactionForce():b2Vec2{ return (null); } public function SolvePositionConstraints():Boolean{ return (false); } public function SetUserData(_arg1):void{ m_userData = _arg1; } public function GetBody1():b2Body{ return (m_body1); } public function SolveVelocityConstraints(_arg1:b2TimeStep):void{ } public function InitPositionConstraints():void{ } public static function Destroy(_arg1:b2Joint, _arg2):void{ } public static function Create(_arg1:b2JointDef, _arg2):b2Joint{ var _local3:b2Joint; switch (_arg1.type){ case e_distanceJoint: _local3 = new b2DistanceJoint((_arg1 as b2DistanceJointDef)); break; case e_mouseJoint: _local3 = new b2MouseJoint((_arg1 as b2MouseJointDef)); break; case e_prismaticJoint: _local3 = new b2PrismaticJoint((_arg1 as b2PrismaticJointDef)); break; case e_revoluteJoint: _local3 = new b2RevoluteJoint((_arg1 as b2RevoluteJointDef)); break; case e_pulleyJoint: _local3 = new b2PulleyJoint((_arg1 as b2PulleyJointDef)); break; case e_gearJoint: _local3 = new b2GearJoint((_arg1 as b2GearJointDef)); break; default: break; }; return (_local3); } } }//package Box2D.Dynamics.Joints
Section 101
//b2JointDef (Box2D.Dynamics.Joints.b2JointDef) package Box2D.Dynamics.Joints { import Box2D.Dynamics.*; public class b2JointDef { public var body2:b2Body; public var type:int; public var userData; public var collideConnected:Boolean; public var body1:b2Body; public function b2JointDef(){ type = b2Joint.e_unknownJoint; userData = null; body1 = null; body2 = null; collideConnected = false; } } }//package Box2D.Dynamics.Joints
Section 102
//b2JointEdge (Box2D.Dynamics.Joints.b2JointEdge) package Box2D.Dynamics.Joints { import Box2D.Dynamics.*; public class b2JointEdge { public var other:b2Body; public var next:b2JointEdge; public var prev:b2JointEdge; public var joint:b2Joint; } }//package Box2D.Dynamics.Joints
Section 103
//b2MouseJoint (Box2D.Dynamics.Joints.b2MouseJoint) package Box2D.Dynamics.Joints { import Box2D.Common.Math.*; import Box2D.Dynamics.*; import Box2D.Common.*; public class b2MouseJoint extends b2Joint { private var K1:b2Mat22; private var K:b2Mat22; public var m_beta:Number; public var m_mass:b2Mat22; private var K2:b2Mat22; public var m_target:b2Vec2; public var m_gamma:Number; public var m_impulse:b2Vec2; public var m_C:b2Vec2; public var m_localAnchor:b2Vec2; public var m_maxForce:Number; public function b2MouseJoint(_arg1:b2MouseJointDef){ var _local3:Number; K = new b2Mat22(); K1 = new b2Mat22(); K2 = new b2Mat22(); m_localAnchor = new b2Vec2(); m_target = new b2Vec2(); m_impulse = new b2Vec2(); m_mass = new b2Mat22(); m_C = new b2Vec2(); super(_arg1); m_target.SetV(_arg1.target); var _local2:Number = (m_target.x - m_body2.m_xf.position.x); _local3 = (m_target.y - m_body2.m_xf.position.y); var _local4:b2Mat22 = m_body2.m_xf.R; m_localAnchor.x = ((_local2 * _local4.col1.x) + (_local3 * _local4.col1.y)); m_localAnchor.y = ((_local2 * _local4.col2.x) + (_local3 * _local4.col2.y)); m_maxForce = _arg1.maxForce; m_impulse.SetZero(); var _local5:Number = m_body2.m_mass; var _local6:Number = ((2 * b2Settings.b2_pi) * _arg1.frequencyHz); var _local7:Number = (((2 * _local5) * _arg1.dampingRatio) * _local6); var _local8:Number = ((_arg1.timeStep * _local5) * (_local6 * _local6)); m_gamma = (1 / (_local7 + _local8)); m_beta = (_local8 / (_local7 + _local8)); } public function SetTarget(_arg1:b2Vec2):void{ if (m_body2.IsSleeping()){ m_body2.WakeUp(); }; m_target = _arg1; } override public function GetAnchor2():b2Vec2{ return (m_body2.GetWorldPoint(m_localAnchor)); } override public function InitVelocityConstraints(_arg1:b2TimeStep):void{ var _local2:b2Body; var _local3:b2Mat22; var _local4:Number; var _local5:Number; var _local7:Number; var _local8:Number; _local2 = m_body2; _local3 = _local2.m_xf.R; _local4 = (m_localAnchor.x - _local2.m_sweep.localCenter.x); _local5 = (m_localAnchor.y - _local2.m_sweep.localCenter.y); var _local6:Number = ((_local3.col1.x * _local4) + (_local3.col2.x * _local5)); _local5 = ((_local3.col1.y * _local4) + (_local3.col2.y * _local5)); _local4 = _local6; _local7 = _local2.m_invMass; _local8 = _local2.m_invI; K1.col1.x = _local7; K1.col2.x = 0; K1.col1.y = 0; K1.col2.y = _local7; K2.col1.x = ((_local8 * _local5) * _local5); K2.col2.x = ((-(_local8) * _local4) * _local5); K2.col1.y = ((-(_local8) * _local4) * _local5); K2.col2.y = ((_local8 * _local4) * _local4); K.SetM(K1); K.AddM(K2); K.col1.x = (K.col1.x + m_gamma); K.col2.y = (K.col2.y + m_gamma); K.Invert(m_mass); m_C.x = ((_local2.m_sweep.c.x + _local4) - m_target.x); m_C.y = ((_local2.m_sweep.c.y + _local5) - m_target.y); _local2.m_angularVelocity = (_local2.m_angularVelocity * 0.98); var _local9:Number = (_arg1.dt * m_impulse.x); var _local10:Number = (_arg1.dt * m_impulse.y); _local2.m_linearVelocity.x = (_local2.m_linearVelocity.x + (_local7 * _local9)); _local2.m_linearVelocity.y = (_local2.m_linearVelocity.y + (_local7 * _local10)); _local2.m_angularVelocity = (_local2.m_angularVelocity + (_local8 * ((_local4 * _local10) - (_local5 * _local9)))); } override public function GetAnchor1():b2Vec2{ return (m_target); } override public function GetReactionTorque():Number{ return (0); } override public function GetReactionForce():b2Vec2{ return (m_impulse); } override public function SolvePositionConstraints():Boolean{ return (true); } override public function SolveVelocityConstraints(_arg1:b2TimeStep):void{ var _local3:b2Mat22; var _local4:Number; var _local5:Number; var _local2:b2Body = m_body2; _local3 = _local2.m_xf.R; var _local6:Number = (m_localAnchor.x - _local2.m_sweep.localCenter.x); var _local7:Number = (m_localAnchor.y - _local2.m_sweep.localCenter.y); _local4 = ((_local3.col1.x * _local6) + (_local3.col2.x * _local7)); _local7 = ((_local3.col1.y * _local6) + (_local3.col2.y * _local7)); _local6 = _local4; var _local8:Number = (_local2.m_linearVelocity.x + (-(_local2.m_angularVelocity) * _local7)); var _local9:Number = (_local2.m_linearVelocity.y + (_local2.m_angularVelocity * _local6)); _local3 = m_mass; _local4 = ((_local8 + ((m_beta * _arg1.inv_dt) * m_C.x)) + ((m_gamma * _arg1.dt) * m_impulse.x)); _local5 = ((_local9 + ((m_beta * _arg1.inv_dt) * m_C.y)) + ((m_gamma * _arg1.dt) * m_impulse.y)); var _local10:Number = (-(_arg1.inv_dt) * ((_local3.col1.x * _local4) + (_local3.col2.x * _local5))); var _local11:Number = (-(_arg1.inv_dt) * ((_local3.col1.y * _local4) + (_local3.col2.y * _local5))); var _local12:Number = m_impulse.x; var _local13:Number = m_impulse.y; m_impulse.x = (m_impulse.x + _local10); m_impulse.y = (m_impulse.y + _local11); var _local14:Number = m_impulse.Length(); if (_local14 > m_maxForce){ m_impulse.Multiply((m_maxForce / _local14)); }; _local10 = (m_impulse.x - _local12); _local11 = (m_impulse.y - _local13); var _local15:Number = (_arg1.dt * _local10); var _local16:Number = (_arg1.dt * _local11); _local2.m_linearVelocity.x = (_local2.m_linearVelocity.x + (_local2.m_invMass * _local15)); _local2.m_linearVelocity.y = (_local2.m_linearVelocity.y + (_local2.m_invMass * _local16)); _local2.m_angularVelocity = (_local2.m_angularVelocity + (_local2.m_invI * ((_local6 * _local16) - (_local7 * _local15)))); } } }//package Box2D.Dynamics.Joints
Section 104
//b2MouseJointDef (Box2D.Dynamics.Joints.b2MouseJointDef) package Box2D.Dynamics.Joints { import Box2D.Common.Math.*; public class b2MouseJointDef extends b2JointDef { public var timeStep:Number; public var target:b2Vec2; public var maxForce:Number; public var dampingRatio:Number; public var frequencyHz:Number; public function b2MouseJointDef(){ target = new b2Vec2(); super(); type = b2Joint.e_mouseJoint; maxForce = 0; frequencyHz = 5; dampingRatio = 0.7; timeStep = (1 / 60); } } }//package Box2D.Dynamics.Joints
Section 105
//b2PrismaticJoint (Box2D.Dynamics.Joints.b2PrismaticJoint) package Box2D.Dynamics.Joints { import Box2D.Common.Math.*; import Box2D.Dynamics.*; import Box2D.Common.*; public class b2PrismaticJoint extends b2Joint { public var m_limitForce:Number; public var m_lowerTranslation:Number; public var m_localXAxis1:b2Vec2; public var m_refAngle:Number; public var m_torque:Number; public var m_motorForce:Number; public var m_enableLimit:Boolean; public var m_angularMass:Number; public var m_maxMotorForce:Number; public var m_localYAxis1:b2Vec2; public var m_force:Number; public var m_motorMass:Number; public var m_upperTranslation:Number; public var m_localAnchor1:b2Vec2; public var m_localAnchor2:b2Vec2; public var m_limitState:int; public var m_linearMass:Number; public var m_motorJacobian:b2Jacobian; public var m_limitPositionImpulse:Number; public var m_motorSpeed:Number; public var m_enableMotor:Boolean; public var m_linearJacobian:b2Jacobian; public function b2PrismaticJoint(_arg1:b2PrismaticJointDef){ var _local2:b2Mat22; var _local3:Number; var _local4:Number; m_localAnchor1 = new b2Vec2(); m_localAnchor2 = new b2Vec2(); m_localXAxis1 = new b2Vec2(); m_localYAxis1 = new b2Vec2(); m_linearJacobian = new b2Jacobian(); m_motorJacobian = new b2Jacobian(); super(_arg1); m_localAnchor1.SetV(_arg1.localAnchor1); m_localAnchor2.SetV(_arg1.localAnchor2); m_localXAxis1.SetV(_arg1.localAxis1); m_localYAxis1.x = -(m_localXAxis1.y); m_localYAxis1.y = m_localXAxis1.x; m_refAngle = _arg1.referenceAngle; m_linearJacobian.SetZero(); m_linearMass = 0; m_force = 0; m_angularMass = 0; m_torque = 0; m_motorJacobian.SetZero(); m_motorMass = 0; m_motorForce = 0; m_limitForce = 0; m_limitPositionImpulse = 0; m_lowerTranslation = _arg1.lowerTranslation; m_upperTranslation = _arg1.upperTranslation; m_maxMotorForce = _arg1.maxMotorForce; m_motorSpeed = _arg1.motorSpeed; m_enableLimit = _arg1.enableLimit; m_enableMotor = _arg1.enableMotor; } override public function SolveVelocityConstraints(_arg1:b2TimeStep):void{ var _local8:Number; var _local15:Number; var _local16:Number; var _local17:Number; var _local18:Number; var _local19:Number; var _local2:b2Body = m_body1; var _local3:b2Body = m_body2; var _local4:Number = _local2.m_invMass; var _local5:Number = _local3.m_invMass; var _local6:Number = _local2.m_invI; var _local7:Number = _local3.m_invI; var _local9:Number = m_linearJacobian.Compute(_local2.m_linearVelocity, _local2.m_angularVelocity, _local3.m_linearVelocity, _local3.m_angularVelocity); var _local10:Number = ((-(_arg1.inv_dt) * m_linearMass) * _local9); m_force = (m_force + _local10); var _local11:Number = (_arg1.dt * _local10); _local2.m_linearVelocity.x = (_local2.m_linearVelocity.x + ((_local4 * _local11) * m_linearJacobian.linear1.x)); _local2.m_linearVelocity.y = (_local2.m_linearVelocity.y + ((_local4 * _local11) * m_linearJacobian.linear1.y)); _local2.m_angularVelocity = (_local2.m_angularVelocity + ((_local6 * _local11) * m_linearJacobian.angular1)); _local3.m_linearVelocity.x = (_local3.m_linearVelocity.x + ((_local5 * _local11) * m_linearJacobian.linear2.x)); _local3.m_linearVelocity.y = (_local3.m_linearVelocity.y + ((_local5 * _local11) * m_linearJacobian.linear2.y)); _local3.m_angularVelocity = (_local3.m_angularVelocity + ((_local7 * _local11) * m_linearJacobian.angular2)); var _local12:Number = (_local3.m_angularVelocity - _local2.m_angularVelocity); var _local13:Number = ((-(_arg1.inv_dt) * m_angularMass) * _local12); m_torque = (m_torque + _local13); var _local14:Number = (_arg1.dt * _local13); _local2.m_angularVelocity = (_local2.m_angularVelocity - (_local6 * _local14)); _local3.m_angularVelocity = (_local3.m_angularVelocity + (_local7 * _local14)); if (((m_enableMotor) && (!((m_limitState == e_equalLimits))))){ _local15 = (m_motorJacobian.Compute(_local2.m_linearVelocity, _local2.m_angularVelocity, _local3.m_linearVelocity, _local3.m_angularVelocity) - m_motorSpeed); _local16 = ((-(_arg1.inv_dt) * m_motorMass) * _local15); _local17 = m_motorForce; m_motorForce = b2Math.b2Clamp((m_motorForce + _local16), -(m_maxMotorForce), m_maxMotorForce); _local16 = (m_motorForce - _local17); _local11 = (_arg1.dt * _local16); _local2.m_linearVelocity.x = (_local2.m_linearVelocity.x + ((_local4 * _local11) * m_motorJacobian.linear1.x)); _local2.m_linearVelocity.y = (_local2.m_linearVelocity.y + ((_local4 * _local11) * m_motorJacobian.linear1.y)); _local2.m_angularVelocity = (_local2.m_angularVelocity + ((_local6 * _local11) * m_motorJacobian.angular1)); _local3.m_linearVelocity.x = (_local3.m_linearVelocity.x + ((_local5 * _local11) * m_motorJacobian.linear2.x)); _local3.m_linearVelocity.y = (_local3.m_linearVelocity.y + ((_local5 * _local11) * m_motorJacobian.linear2.y)); _local3.m_angularVelocity = (_local3.m_angularVelocity + ((_local7 * _local11) * m_motorJacobian.angular2)); }; if (((m_enableLimit) && (!((m_limitState == e_inactiveLimit))))){ _local18 = m_motorJacobian.Compute(_local2.m_linearVelocity, _local2.m_angularVelocity, _local3.m_linearVelocity, _local3.m_angularVelocity); _local19 = ((-(_arg1.inv_dt) * m_motorMass) * _local18); if (m_limitState == e_equalLimits){ m_limitForce = (m_limitForce + _local19); } else { if (m_limitState == e_atLowerLimit){ _local8 = m_limitForce; m_limitForce = b2Math.b2Max((m_limitForce + _local19), 0); _local19 = (m_limitForce - _local8); } else { if (m_limitState == e_atUpperLimit){ _local8 = m_limitForce; m_limitForce = b2Math.b2Min((m_limitForce + _local19), 0); _local19 = (m_limitForce - _local8); }; }; }; _local11 = (_arg1.dt * _local19); _local2.m_linearVelocity.x = (_local2.m_linearVelocity.x + ((_local4 * _local11) * m_motorJacobian.linear1.x)); _local2.m_linearVelocity.y = (_local2.m_linearVelocity.y + ((_local4 * _local11) * m_motorJacobian.linear1.y)); _local2.m_angularVelocity = (_local2.m_angularVelocity + ((_local6 * _local11) * m_motorJacobian.angular1)); _local3.m_linearVelocity.x = (_local3.m_linearVelocity.x + ((_local5 * _local11) * m_motorJacobian.linear2.x)); _local3.m_linearVelocity.y = (_local3.m_linearVelocity.y + ((_local5 * _local11) * m_motorJacobian.linear2.y)); _local3.m_angularVelocity = (_local3.m_angularVelocity + ((_local7 * _local11) * m_motorJacobian.angular2)); }; } override public function GetAnchor1():b2Vec2{ return (m_body1.GetWorldPoint(m_localAnchor1)); } override public function GetAnchor2():b2Vec2{ return (m_body2.GetWorldPoint(m_localAnchor2)); } public function GetUpperLimit():Number{ return (m_upperTranslation); } public function GetLowerLimit():Number{ return (m_lowerTranslation); } public function EnableMotor(_arg1:Boolean):void{ m_enableMotor = _arg1; } public function GetJointTranslation():Number{ var _local3:b2Mat22; var _local1:b2Body = m_body1; var _local2:b2Body = m_body2; var _local4:b2Vec2 = _local1.GetWorldPoint(m_localAnchor1); var _local5:b2Vec2 = _local2.GetWorldPoint(m_localAnchor2); var _local6:Number = (_local5.x - _local4.x); var _local7:Number = (_local5.y - _local4.y); var _local8:b2Vec2 = _local1.GetWorldVector(m_localXAxis1); var _local9:Number = ((_local8.x * _local6) + (_local8.y * _local7)); return (_local9); } public function GetMotorSpeed():Number{ return (m_motorSpeed); } override public function GetReactionForce():b2Vec2{ var _local1:b2Mat22 = m_body1.m_xf.R; var _local2:Number = (m_limitForce * ((_local1.col1.x * m_localXAxis1.x) + (_local1.col2.x * m_localXAxis1.y))); var _local3:Number = (m_limitForce * ((_local1.col1.y * m_localXAxis1.x) + (_local1.col2.y * m_localXAxis1.y))); var _local4:Number = (m_force * ((_local1.col1.x * m_localYAxis1.x) + (_local1.col2.x * m_localYAxis1.y))); var _local5:Number = (m_force * ((_local1.col1.y * m_localYAxis1.x) + (_local1.col2.y * m_localYAxis1.y))); return (new b2Vec2(((m_limitForce * _local2) + (m_force * _local4)), ((m_limitForce * _local3) + (m_force * _local5)))); } override public function SolvePositionConstraints():Boolean{ var _local1:Number; var _local2:Number; var _local9:b2Mat22; var _local10:Number; var _local29:Number; var _local30:Number; var _local31:Number; var _local32:Number; var _local3:b2Body = m_body1; var _local4:b2Body = m_body2; var _local5:Number = _local3.m_invMass; var _local6:Number = _local4.m_invMass; var _local7:Number = _local3.m_invI; var _local8:Number = _local4.m_invI; _local9 = _local3.m_xf.R; var _local11:Number = (m_localAnchor1.x - _local3.m_sweep.localCenter.x); var _local12:Number = (m_localAnchor1.y - _local3.m_sweep.localCenter.y); _local10 = ((_local9.col1.x * _local11) + (_local9.col2.x * _local12)); _local12 = ((_local9.col1.y * _local11) + (_local9.col2.y * _local12)); _local11 = _local10; _local9 = _local4.m_xf.R; var _local13:Number = (m_localAnchor2.x - _local4.m_sweep.localCenter.x); var _local14:Number = (m_localAnchor2.y - _local4.m_sweep.localCenter.y); _local10 = ((_local9.col1.x * _local13) + (_local9.col2.x * _local14)); _local14 = ((_local9.col1.y * _local13) + (_local9.col2.y * _local14)); _local13 = _local10; var _local15:Number = (_local3.m_sweep.c.x + _local11); var _local16:Number = (_local3.m_sweep.c.y + _local12); var _local17:Number = (_local4.m_sweep.c.x + _local13); var _local18:Number = (_local4.m_sweep.c.y + _local14); var _local19:Number = (_local17 - _local15); var _local20:Number = (_local18 - _local16); _local9 = _local3.m_xf.R; var _local21:Number = ((_local9.col1.x * m_localYAxis1.x) + (_local9.col2.x * m_localYAxis1.y)); var _local22:Number = ((_local9.col1.y * m_localYAxis1.x) + (_local9.col2.y * m_localYAxis1.y)); var _local23:Number = ((_local21 * _local19) + (_local22 * _local20)); _local23 = b2Math.b2Clamp(_local23, -(b2Settings.b2_maxLinearCorrection), b2Settings.b2_maxLinearCorrection); var _local24:Number = (-(m_linearMass) * _local23); _local3.m_sweep.c.x = (_local3.m_sweep.c.x + ((_local5 * _local24) * m_linearJacobian.linear1.x)); _local3.m_sweep.c.y = (_local3.m_sweep.c.y + ((_local5 * _local24) * m_linearJacobian.linear1.y)); _local3.m_sweep.a = (_local3.m_sweep.a + ((_local7 * _local24) * m_linearJacobian.angular1)); _local4.m_sweep.c.x = (_local4.m_sweep.c.x + ((_local6 * _local24) * m_linearJacobian.linear2.x)); _local4.m_sweep.c.y = (_local4.m_sweep.c.y + ((_local6 * _local24) * m_linearJacobian.linear2.y)); _local4.m_sweep.a = (_local4.m_sweep.a + ((_local8 * _local24) * m_linearJacobian.angular2)); var _local25:Number = b2Math.b2Abs(_local23); var _local26:Number = ((_local4.m_sweep.a - _local3.m_sweep.a) - m_refAngle); _local26 = b2Math.b2Clamp(_local26, -(b2Settings.b2_maxAngularCorrection), b2Settings.b2_maxAngularCorrection); var _local27:Number = (-(m_angularMass) * _local26); _local3.m_sweep.a = (_local3.m_sweep.a - (_local3.m_invI * _local27)); _local4.m_sweep.a = (_local4.m_sweep.a + (_local4.m_invI * _local27)); _local3.SynchronizeTransform(); _local4.SynchronizeTransform(); var _local28:Number = b2Math.b2Abs(_local26); if (((m_enableLimit) && (!((m_limitState == e_inactiveLimit))))){ _local9 = _local3.m_xf.R; _local11 = (m_localAnchor1.x - _local3.m_sweep.localCenter.x); _local12 = (m_localAnchor1.y - _local3.m_sweep.localCenter.y); _local10 = ((_local9.col1.x * _local11) + (_local9.col2.x * _local12)); _local12 = ((_local9.col1.y * _local11) + (_local9.col2.y * _local12)); _local11 = _local10; _local9 = _local4.m_xf.R; _local13 = (m_localAnchor2.x - _local4.m_sweep.localCenter.x); _local14 = (m_localAnchor2.y - _local4.m_sweep.localCenter.y); _local10 = ((_local9.col1.x * _local13) + (_local9.col2.x * _local14)); _local14 = ((_local9.col1.y * _local13) + (_local9.col2.y * _local14)); _local13 = _local10; _local15 = (_local3.m_sweep.c.x + _local11); _local16 = (_local3.m_sweep.c.y + _local12); _local17 = (_local4.m_sweep.c.x + _local13); _local18 = (_local4.m_sweep.c.y + _local14); _local19 = (_local17 - _local15); _local20 = (_local18 - _local16); _local9 = _local3.m_xf.R; _local29 = ((_local9.col1.x * m_localXAxis1.x) + (_local9.col2.x * m_localXAxis1.y)); _local30 = ((_local9.col1.y * m_localXAxis1.x) + (_local9.col2.y * m_localXAxis1.y)); _local31 = ((_local29 * _local19) + (_local30 * _local20)); _local32 = 0; if (m_limitState == e_equalLimits){ _local1 = b2Math.b2Clamp(_local31, -(b2Settings.b2_maxLinearCorrection), b2Settings.b2_maxLinearCorrection); _local32 = (-(m_motorMass) * _local1); _local25 = b2Math.b2Max(_local25, b2Math.b2Abs(_local26)); } else { if (m_limitState == e_atLowerLimit){ _local1 = (_local31 - m_lowerTranslation); _local25 = b2Math.b2Max(_local25, -(_local1)); _local1 = b2Math.b2Clamp((_local1 + b2Settings.b2_linearSlop), -(b2Settings.b2_maxLinearCorrection), 0); _local32 = (-(m_motorMass) * _local1); _local2 = m_limitPositionImpulse; m_limitPositionImpulse = b2Math.b2Max((m_limitPositionImpulse + _local32), 0); _local32 = (m_limitPositionImpulse - _local2); } else { if (m_limitState == e_atUpperLimit){ _local1 = (_local31 - m_upperTranslation); _local25 = b2Math.b2Max(_local25, _local1); _local1 = b2Math.b2Clamp((_local1 - b2Settings.b2_linearSlop), 0, b2Settings.b2_maxLinearCorrection); _local32 = (-(m_motorMass) * _local1); _local2 = m_limitPositionImpulse; m_limitPositionImpulse = b2Math.b2Min((m_limitPositionImpulse + _local32), 0); _local32 = (m_limitPositionImpulse - _local2); }; }; }; _local3.m_sweep.c.x = (_local3.m_sweep.c.x + ((_local5 * _local32) * m_motorJacobian.linear1.x)); _local3.m_sweep.c.y = (_local3.m_sweep.c.y + ((_local5 * _local32) * m_motorJacobian.linear1.y)); _local3.m_sweep.a = (_local3.m_sweep.a + ((_local7 * _local32) * m_motorJacobian.angular1)); _local4.m_sweep.c.x = (_local4.m_sweep.c.x + ((_local6 * _local32) * m_motorJacobian.linear2.x)); _local4.m_sweep.c.y = (_local4.m_sweep.c.y + ((_local6 * _local32) * m_motorJacobian.linear2.y)); _local4.m_sweep.a = (_local4.m_sweep.a + ((_local8 * _local32) * m_motorJacobian.angular2)); _local3.SynchronizeTransform(); _local4.SynchronizeTransform(); }; return ((((_local25 <= b2Settings.b2_linearSlop)) && ((_local28 <= b2Settings.b2_angularSlop)))); } public function SetMotorSpeed(_arg1:Number):void{ m_motorSpeed = _arg1; } public function GetJointSpeed():Number{ var _local3:b2Mat22; var _local1:b2Body = m_body1; var _local2:b2Body = m_body2; _local3 = _local1.m_xf.R; var _local4:Number = (m_localAnchor1.x - _local1.m_sweep.localCenter.x); var _local5:Number = (m_localAnchor1.y - _local1.m_sweep.localCenter.y); var _local6:Number = ((_local3.col1.x * _local4) + (_local3.col2.x * _local5)); _local5 = ((_local3.col1.y * _local4) + (_local3.col2.y * _local5)); _local4 = _local6; _local3 = _local2.m_xf.R; var _local7:Number = (m_localAnchor2.x - _local2.m_sweep.localCenter.x); var _local8:Number = (m_localAnchor2.y - _local2.m_sweep.localCenter.y); _local6 = ((_local3.col1.x * _local7) + (_local3.col2.x * _local8)); _local8 = ((_local3.col1.y * _local7) + (_local3.col2.y * _local8)); _local7 = _local6; var _local9:Number = (_local1.m_sweep.c.x + _local4); var _local10:Number = (_local1.m_sweep.c.y + _local5); var _local11:Number = (_local2.m_sweep.c.x + _local7); var _local12:Number = (_local2.m_sweep.c.y + _local8); var _local13:Number = (_local11 - _local9); var _local14:Number = (_local12 - _local10); var _local15:b2Vec2 = _local1.GetWorldVector(m_localXAxis1); var _local16:b2Vec2 = _local1.m_linearVelocity; var _local17:b2Vec2 = _local2.m_linearVelocity; var _local18:Number = _local1.m_angularVelocity; var _local19:Number = _local2.m_angularVelocity; var _local20:Number = (((_local13 * (-(_local18) * _local15.y)) + (_local14 * (_local18 * _local15.x))) + ((_local15.x * (((_local17.x + (-(_local19) * _local8)) - _local16.x) - (-(_local18) * _local5))) + (_local15.y * (((_local17.y + (_local19 * _local7)) - _local16.y) - (_local18 * _local4))))); return (_local20); } override public function InitVelocityConstraints(_arg1:b2TimeStep):void{ var _local4:b2Mat22; var _local5:Number; var _local18:Number; var _local19:Number; var _local20:Number; var _local21:Number; var _local22:Number; var _local23:Number; var _local24:Number; var _local25:Number; var _local26:Number; var _local27:Number; var _local28:Number; var _local2:b2Body = m_body1; var _local3:b2Body = m_body2; _local4 = _local2.m_xf.R; var _local6:Number = (m_localAnchor1.x - _local2.m_sweep.localCenter.x); var _local7:Number = (m_localAnchor1.y - _local2.m_sweep.localCenter.y); _local5 = ((_local4.col1.x * _local6) + (_local4.col2.x * _local7)); _local7 = ((_local4.col1.y * _local6) + (_local4.col2.y * _local7)); _local6 = _local5; _local4 = _local3.m_xf.R; var _local8:Number = (m_localAnchor2.x - _local3.m_sweep.localCenter.x); var _local9:Number = (m_localAnchor2.y - _local3.m_sweep.localCenter.y); _local5 = ((_local4.col1.x * _local8) + (_local4.col2.x * _local9)); _local9 = ((_local4.col1.y * _local8) + (_local4.col2.y * _local9)); _local8 = _local5; var _local10:Number = _local2.m_invMass; var _local11:Number = _local3.m_invMass; var _local12:Number = _local2.m_invI; var _local13:Number = _local3.m_invI; _local4 = _local2.m_xf.R; var _local14:Number = ((_local4.col1.x * m_localYAxis1.x) + (_local4.col2.x * m_localYAxis1.y)); var _local15:Number = ((_local4.col1.y * m_localYAxis1.x) + (_local4.col2.y * m_localYAxis1.y)); var _local16:Number = ((_local3.m_sweep.c.x + _local8) - _local2.m_sweep.c.x); var _local17:Number = ((_local3.m_sweep.c.y + _local9) - _local2.m_sweep.c.y); m_linearJacobian.linear1.x = -(_local14); m_linearJacobian.linear1.y = -(_local15); m_linearJacobian.linear2.x = _local14; m_linearJacobian.linear2.y = _local15; m_linearJacobian.angular1 = -(((_local16 * _local15) - (_local17 * _local14))); m_linearJacobian.angular2 = ((_local8 * _local15) - (_local9 * _local14)); m_linearMass = (((_local10 + ((_local12 * m_linearJacobian.angular1) * m_linearJacobian.angular1)) + _local11) + ((_local13 * m_linearJacobian.angular2) * m_linearJacobian.angular2)); m_linearMass = (1 / m_linearMass); m_angularMass = (_local12 + _local13); if (m_angularMass > Number.MIN_VALUE){ m_angularMass = (1 / m_angularMass); }; if (((m_enableLimit) || (m_enableMotor))){ _local4 = _local2.m_xf.R; _local18 = ((_local4.col1.x * m_localXAxis1.x) + (_local4.col2.x * m_localXAxis1.y)); _local19 = ((_local4.col1.y * m_localXAxis1.x) + (_local4.col2.y * m_localXAxis1.y)); m_motorJacobian.linear1.x = -(_local18); m_motorJacobian.linear1.y = -(_local19); m_motorJacobian.linear2.x = _local18; m_motorJacobian.linear2.y = _local19; m_motorJacobian.angular1 = -(((_local16 * _local19) - (_local17 * _local18))); m_motorJacobian.angular2 = ((_local8 * _local19) - (_local9 * _local18)); m_motorMass = (((_local10 + ((_local12 * m_motorJacobian.angular1) * m_motorJacobian.angular1)) + _local11) + ((_local13 * m_motorJacobian.angular2) * m_motorJacobian.angular2)); m_motorMass = (1 / m_motorMass); if (m_enableLimit){ _local20 = (_local16 - _local6); _local21 = (_local17 - _local7); _local22 = ((_local18 * _local20) + (_local19 * _local21)); if (b2Math.b2Abs((m_upperTranslation - m_lowerTranslation)) < (2 * b2Settings.b2_linearSlop)){ m_limitState = e_equalLimits; } else { if (_local22 <= m_lowerTranslation){ if (m_limitState != e_atLowerLimit){ m_limitForce = 0; }; m_limitState = e_atLowerLimit; } else { if (_local22 >= m_upperTranslation){ if (m_limitState != e_atUpperLimit){ m_limitForce = 0; }; m_limitState = e_atUpperLimit; } else { m_limitState = e_inactiveLimit; m_limitForce = 0; }; }; }; }; }; if (m_enableMotor == false){ m_motorForce = 0; }; if (m_enableLimit == false){ m_limitForce = 0; }; if (_arg1.warmStarting){ _local23 = (_arg1.dt * ((m_force * m_linearJacobian.linear1.x) + ((m_motorForce + m_limitForce) * m_motorJacobian.linear1.x))); _local24 = (_arg1.dt * ((m_force * m_linearJacobian.linear1.y) + ((m_motorForce + m_limitForce) * m_motorJacobian.linear1.y))); _local25 = (_arg1.dt * ((m_force * m_linearJacobian.linear2.x) + ((m_motorForce + m_limitForce) * m_motorJacobian.linear2.x))); _local26 = (_arg1.dt * ((m_force * m_linearJacobian.linear2.y) + ((m_motorForce + m_limitForce) * m_motorJacobian.linear2.y))); _local27 = (_arg1.dt * (((m_force * m_linearJacobian.angular1) - m_torque) + ((m_motorForce + m_limitForce) * m_motorJacobian.angular1))); _local28 = (_arg1.dt * (((m_force * m_linearJacobian.angular2) + m_torque) + ((m_motorForce + m_limitForce) * m_motorJacobian.angular2))); _local2.m_linearVelocity.x = (_local2.m_linearVelocity.x + (_local10 * _local23)); _local2.m_linearVelocity.y = (_local2.m_linearVelocity.y + (_local10 * _local24)); _local2.m_angularVelocity = (_local2.m_angularVelocity + (_local12 * _local27)); _local3.m_linearVelocity.x = (_local3.m_linearVelocity.x + (_local11 * _local25)); _local3.m_linearVelocity.y = (_local3.m_linearVelocity.y + (_local11 * _local26)); _local3.m_angularVelocity = (_local3.m_angularVelocity + (_local13 * _local28)); } else { m_force = 0; m_torque = 0; m_limitForce = 0; m_motorForce = 0; }; m_limitPositionImpulse = 0; } public function GetMotorForce():Number{ return (m_motorForce); } public function EnableLimit(_arg1:Boolean):void{ m_enableLimit = _arg1; } public function SetMaxMotorForce(_arg1:Number):void{ m_maxMotorForce = _arg1; } override public function GetReactionTorque():Number{ return (m_torque); } public function IsLimitEnabled():Boolean{ return (m_enableLimit); } public function IsMotorEnabled():Boolean{ return (m_enableMotor); } public function SetLimits(_arg1:Number, _arg2:Number):void{ m_lowerTranslation = _arg1; m_upperTranslation = _arg2; } } }//package Box2D.Dynamics.Joints
Section 106
//b2PrismaticJointDef (Box2D.Dynamics.Joints.b2PrismaticJointDef) package Box2D.Dynamics.Joints { import Box2D.Common.Math.*; import Box2D.Dynamics.*; public class b2PrismaticJointDef extends b2JointDef { public var motorSpeed:Number; public var localAxis1:b2Vec2; public var referenceAngle:Number; public var upperTranslation:Number; public var localAnchor1:b2Vec2; public var localAnchor2:b2Vec2; public var enableLimit:Boolean; public var enableMotor:Boolean; public var maxMotorForce:Number; public var lowerTranslation:Number; public function b2PrismaticJointDef(){ localAnchor1 = new b2Vec2(); localAnchor2 = new b2Vec2(); localAxis1 = new b2Vec2(); super(); type = b2Joint.e_prismaticJoint; localAxis1.Set(1, 0); referenceAngle = 0; enableLimit = false; lowerTranslation = 0; upperTranslation = 0; enableMotor = false; maxMotorForce = 0; motorSpeed = 0; } public function Initialize(_arg1:b2Body, _arg2:b2Body, _arg3:b2Vec2, _arg4:b2Vec2):void{ body1 = _arg1; body2 = _arg2; localAnchor1 = body1.GetLocalPoint(_arg3); localAnchor2 = body2.GetLocalPoint(_arg3); localAxis1 = body1.GetLocalVector(_arg4); referenceAngle = (body2.GetAngle() - body1.GetAngle()); } } }//package Box2D.Dynamics.Joints
Section 107
//b2PulleyJoint (Box2D.Dynamics.Joints.b2PulleyJoint) package Box2D.Dynamics.Joints { import Box2D.Common.Math.*; import Box2D.Dynamics.*; import Box2D.Common.*; public class b2PulleyJoint extends b2Joint { public var m_limitState1:int; public var m_limitState2:int; public var m_ground:b2Body; public var m_maxLength2:Number; public var m_maxLength1:Number; public var m_limitPositionImpulse1:Number; public var m_limitPositionImpulse2:Number; public var m_force:Number; public var m_constant:Number; public var m_positionImpulse:Number; public var m_state:int; public var m_ratio:Number; public var m_groundAnchor1:b2Vec2; public var m_groundAnchor2:b2Vec2; public var m_localAnchor1:b2Vec2; public var m_localAnchor2:b2Vec2; public var m_limitMass1:Number; public var m_limitMass2:Number; public var m_pulleyMass:Number; public var m_u1:b2Vec2; public var m_limitForce1:Number; public var m_limitForce2:Number; public var m_u2:b2Vec2; public static const b2_minPulleyLength:Number = 2; public function b2PulleyJoint(_arg1:b2PulleyJointDef){ var _local2:b2Mat22; var _local3:Number; var _local4:Number; m_groundAnchor1 = new b2Vec2(); m_groundAnchor2 = new b2Vec2(); m_localAnchor1 = new b2Vec2(); m_localAnchor2 = new b2Vec2(); m_u1 = new b2Vec2(); m_u2 = new b2Vec2(); super(_arg1); m_ground = m_body1.m_world.m_groundBody; m_groundAnchor1.x = (_arg1.groundAnchor1.x - m_ground.m_xf.position.x); m_groundAnchor1.y = (_arg1.groundAnchor1.y - m_ground.m_xf.position.y); m_groundAnchor2.x = (_arg1.groundAnchor2.x - m_ground.m_xf.position.x); m_groundAnchor2.y = (_arg1.groundAnchor2.y - m_ground.m_xf.position.y); m_localAnchor1.SetV(_arg1.localAnchor1); m_localAnchor2.SetV(_arg1.localAnchor2); m_ratio = _arg1.ratio; m_constant = (_arg1.length1 + (m_ratio * _arg1.length2)); m_maxLength1 = b2Math.b2Min(_arg1.maxLength1, (m_constant - (m_ratio * b2_minPulleyLength))); m_maxLength2 = b2Math.b2Min(_arg1.maxLength2, ((m_constant - b2_minPulleyLength) / m_ratio)); m_force = 0; m_limitForce1 = 0; m_limitForce2 = 0; } public function GetGroundAnchor2():b2Vec2{ var _local1:b2Vec2 = m_ground.m_xf.position.Copy(); _local1.Add(m_groundAnchor2); return (_local1); } override public function GetAnchor1():b2Vec2{ return (m_body1.GetWorldPoint(m_localAnchor1)); } override public function GetAnchor2():b2Vec2{ return (m_body2.GetWorldPoint(m_localAnchor2)); } override public function GetReactionForce():b2Vec2{ var _local1:b2Vec2 = m_u2.Copy(); _local1.Multiply(m_force); return (_local1); } override public function SolvePositionConstraints():Boolean{ var _local3:b2Mat22; var _local8:Number; var _local9:Number; var _local10:Number; var _local11:Number; var _local12:Number; var _local13:Number; var _local14:Number; var _local15:Number; var _local16:Number; var _local17:Number; var _local18:Number; var _local19:Number; var _local20:Number; var _local21:Number; var _local22:Number; var _local1:b2Body = m_body1; var _local2:b2Body = m_body2; var _local4:Number = (m_ground.m_xf.position.x + m_groundAnchor1.x); var _local5:Number = (m_ground.m_xf.position.y + m_groundAnchor1.y); var _local6:Number = (m_ground.m_xf.position.x + m_groundAnchor2.x); var _local7:Number = (m_ground.m_xf.position.y + m_groundAnchor2.y); var _local23:Number = 0; if (m_state == e_atUpperLimit){ _local3 = _local1.m_xf.R; _local8 = (m_localAnchor1.x - _local1.m_sweep.localCenter.x); _local9 = (m_localAnchor1.y - _local1.m_sweep.localCenter.y); _local22 = ((_local3.col1.x * _local8) + (_local3.col2.x * _local9)); _local9 = ((_local3.col1.y * _local8) + (_local3.col2.y * _local9)); _local8 = _local22; _local3 = _local2.m_xf.R; _local10 = (m_localAnchor2.x - _local2.m_sweep.localCenter.x); _local11 = (m_localAnchor2.y - _local2.m_sweep.localCenter.y); _local22 = ((_local3.col1.x * _local10) + (_local3.col2.x * _local11)); _local11 = ((_local3.col1.y * _local10) + (_local3.col2.y * _local11)); _local10 = _local22; _local12 = (_local1.m_sweep.c.x + _local8); _local13 = (_local1.m_sweep.c.y + _local9); _local14 = (_local2.m_sweep.c.x + _local10); _local15 = (_local2.m_sweep.c.y + _local11); m_u1.Set((_local12 - _local4), (_local13 - _local5)); m_u2.Set((_local14 - _local6), (_local15 - _local7)); _local16 = m_u1.Length(); _local17 = m_u2.Length(); if (_local16 > b2Settings.b2_linearSlop){ m_u1.Multiply((1 / _local16)); } else { m_u1.SetZero(); }; if (_local17 > b2Settings.b2_linearSlop){ m_u2.Multiply((1 / _local17)); } else { m_u2.SetZero(); }; _local18 = ((m_constant - _local16) - (m_ratio * _local17)); _local23 = b2Math.b2Max(_local23, -(_local18)); _local18 = b2Math.b2Clamp((_local18 + b2Settings.b2_linearSlop), -(b2Settings.b2_maxLinearCorrection), 0); _local19 = (-(m_pulleyMass) * _local18); _local20 = m_positionImpulse; m_positionImpulse = b2Math.b2Max(0, (m_positionImpulse + _local19)); _local19 = (m_positionImpulse - _local20); _local12 = (-(_local19) * m_u1.x); _local13 = (-(_local19) * m_u1.y); _local14 = ((-(m_ratio) * _local19) * m_u2.x); _local15 = ((-(m_ratio) * _local19) * m_u2.y); _local1.m_sweep.c.x = (_local1.m_sweep.c.x + (_local1.m_invMass * _local12)); _local1.m_sweep.c.y = (_local1.m_sweep.c.y + (_local1.m_invMass * _local13)); _local1.m_sweep.a = (_local1.m_sweep.a + (_local1.m_invI * ((_local8 * _local13) - (_local9 * _local12)))); _local2.m_sweep.c.x = (_local2.m_sweep.c.x + (_local2.m_invMass * _local14)); _local2.m_sweep.c.y = (_local2.m_sweep.c.y + (_local2.m_invMass * _local15)); _local2.m_sweep.a = (_local2.m_sweep.a + (_local2.m_invI * ((_local10 * _local15) - (_local11 * _local14)))); _local1.SynchronizeTransform(); _local2.SynchronizeTransform(); }; if (m_limitState1 == e_atUpperLimit){ _local3 = _local1.m_xf.R; _local8 = (m_localAnchor1.x - _local1.m_sweep.localCenter.x); _local9 = (m_localAnchor1.y - _local1.m_sweep.localCenter.y); _local22 = ((_local3.col1.x * _local8) + (_local3.col2.x * _local9)); _local9 = ((_local3.col1.y * _local8) + (_local3.col2.y * _local9)); _local8 = _local22; _local12 = (_local1.m_sweep.c.x + _local8); _local13 = (_local1.m_sweep.c.y + _local9); m_u1.Set((_local12 - _local4), (_local13 - _local5)); _local16 = m_u1.Length(); if (_local16 > b2Settings.b2_linearSlop){ m_u1.x = (m_u1.x * (1 / _local16)); m_u1.y = (m_u1.y * (1 / _local16)); } else { m_u1.SetZero(); }; _local18 = (m_maxLength1 - _local16); _local23 = b2Math.b2Max(_local23, -(_local18)); _local18 = b2Math.b2Clamp((_local18 + b2Settings.b2_linearSlop), -(b2Settings.b2_maxLinearCorrection), 0); _local19 = (-(m_limitMass1) * _local18); _local21 = m_limitPositionImpulse1; m_limitPositionImpulse1 = b2Math.b2Max(0, (m_limitPositionImpulse1 + _local19)); _local19 = (m_limitPositionImpulse1 - _local21); _local12 = (-(_local19) * m_u1.x); _local13 = (-(_local19) * m_u1.y); _local1.m_sweep.c.x = (_local1.m_sweep.c.x + (_local1.m_invMass * _local12)); _local1.m_sweep.c.y = (_local1.m_sweep.c.y + (_local1.m_invMass * _local13)); _local1.m_sweep.a = (_local1.m_sweep.a + (_local1.m_invI * ((_local8 * _local13) - (_local9 * _local12)))); _local1.SynchronizeTransform(); }; if (m_limitState2 == e_atUpperLimit){ _local3 = _local2.m_xf.R; _local10 = (m_localAnchor2.x - _local2.m_sweep.localCenter.x); _local11 = (m_localAnchor2.y - _local2.m_sweep.localCenter.y); _local22 = ((_local3.col1.x * _local10) + (_local3.col2.x * _local11)); _local11 = ((_local3.col1.y * _local10) + (_local3.col2.y * _local11)); _local10 = _local22; _local14 = (_local2.m_sweep.c.x + _local10); _local15 = (_local2.m_sweep.c.y + _local11); m_u2.Set((_local14 - _local6), (_local15 - _local7)); _local17 = m_u2.Length(); if (_local17 > b2Settings.b2_linearSlop){ m_u2.x = (m_u2.x * (1 / _local17)); m_u2.y = (m_u2.y * (1 / _local17)); } else { m_u2.SetZero(); }; _local18 = (m_maxLength2 - _local17); _local23 = b2Math.b2Max(_local23, -(_local18)); _local18 = b2Math.b2Clamp((_local18 + b2Settings.b2_linearSlop), -(b2Settings.b2_maxLinearCorrection), 0); _local19 = (-(m_limitMass2) * _local18); _local21 = m_limitPositionImpulse2; m_limitPositionImpulse2 = b2Math.b2Max(0, (m_limitPositionImpulse2 + _local19)); _local19 = (m_limitPositionImpulse2 - _local21); _local14 = (-(_local19) * m_u2.x); _local15 = (-(_local19) * m_u2.y); _local2.m_sweep.c.x = (_local2.m_sweep.c.x + (_local2.m_invMass * _local14)); _local2.m_sweep.c.y = (_local2.m_sweep.c.y + (_local2.m_invMass * _local15)); _local2.m_sweep.a = (_local2.m_sweep.a + (_local2.m_invI * ((_local10 * _local15) - (_local11 * _local14)))); _local2.SynchronizeTransform(); }; return ((_local23 < b2Settings.b2_linearSlop)); } override public function InitVelocityConstraints(_arg1:b2TimeStep):void{ var _local4:b2Mat22; var _local23:Number; var _local24:Number; var _local25:Number; var _local26:Number; var _local2:b2Body = m_body1; var _local3:b2Body = m_body2; _local4 = _local2.m_xf.R; var _local5:Number = (m_localAnchor1.x - _local2.m_sweep.localCenter.x); var _local6:Number = (m_localAnchor1.y - _local2.m_sweep.localCenter.y); var _local7:Number = ((_local4.col1.x * _local5) + (_local4.col2.x * _local6)); _local6 = ((_local4.col1.y * _local5) + (_local4.col2.y * _local6)); _local5 = _local7; _local4 = _local3.m_xf.R; var _local8:Number = (m_localAnchor2.x - _local3.m_sweep.localCenter.x); var _local9:Number = (m_localAnchor2.y - _local3.m_sweep.localCenter.y); _local7 = ((_local4.col1.x * _local8) + (_local4.col2.x * _local9)); _local9 = ((_local4.col1.y * _local8) + (_local4.col2.y * _local9)); _local8 = _local7; var _local10:Number = (_local2.m_sweep.c.x + _local5); var _local11:Number = (_local2.m_sweep.c.y + _local6); var _local12:Number = (_local3.m_sweep.c.x + _local8); var _local13:Number = (_local3.m_sweep.c.y + _local9); var _local14:Number = (m_ground.m_xf.position.x + m_groundAnchor1.x); var _local15:Number = (m_ground.m_xf.position.y + m_groundAnchor1.y); var _local16:Number = (m_ground.m_xf.position.x + m_groundAnchor2.x); var _local17:Number = (m_ground.m_xf.position.y + m_groundAnchor2.y); m_u1.Set((_local10 - _local14), (_local11 - _local15)); m_u2.Set((_local12 - _local16), (_local13 - _local17)); var _local18:Number = m_u1.Length(); var _local19:Number = m_u2.Length(); if (_local18 > b2Settings.b2_linearSlop){ m_u1.Multiply((1 / _local18)); } else { m_u1.SetZero(); }; if (_local19 > b2Settings.b2_linearSlop){ m_u2.Multiply((1 / _local19)); } else { m_u2.SetZero(); }; var _local20:Number = ((m_constant - _local18) - (m_ratio * _local19)); if (_local20 > 0){ m_state = e_inactiveLimit; m_force = 0; } else { m_state = e_atUpperLimit; m_positionImpulse = 0; }; if (_local18 < m_maxLength1){ m_limitState1 = e_inactiveLimit; m_limitForce1 = 0; } else { m_limitState1 = e_atUpperLimit; m_limitPositionImpulse1 = 0; }; if (_local19 < m_maxLength2){ m_limitState2 = e_inactiveLimit; m_limitForce2 = 0; } else { m_limitState2 = e_atUpperLimit; m_limitPositionImpulse2 = 0; }; var _local21:Number = ((_local5 * m_u1.y) - (_local6 * m_u1.x)); var _local22:Number = ((_local8 * m_u2.y) - (_local9 * m_u2.x)); m_limitMass1 = (_local2.m_invMass + ((_local2.m_invI * _local21) * _local21)); m_limitMass2 = (_local3.m_invMass + ((_local3.m_invI * _local22) * _local22)); m_pulleyMass = (m_limitMass1 + ((m_ratio * m_ratio) * m_limitMass2)); m_limitMass1 = (1 / m_limitMass1); m_limitMass2 = (1 / m_limitMass2); m_pulleyMass = (1 / m_pulleyMass); if (_arg1.warmStarting){ _local23 = ((_arg1.dt * (-(m_force) - m_limitForce1)) * m_u1.x); _local24 = ((_arg1.dt * (-(m_force) - m_limitForce1)) * m_u1.y); _local25 = ((_arg1.dt * ((-(m_ratio) * m_force) - m_limitForce2)) * m_u2.x); _local26 = ((_arg1.dt * ((-(m_ratio) * m_force) - m_limitForce2)) * m_u2.y); _local2.m_linearVelocity.x = (_local2.m_linearVelocity.x + (_local2.m_invMass * _local23)); _local2.m_linearVelocity.y = (_local2.m_linearVelocity.y + (_local2.m_invMass * _local24)); _local2.m_angularVelocity = (_local2.m_angularVelocity + (_local2.m_invI * ((_local5 * _local24) - (_local6 * _local23)))); _local3.m_linearVelocity.x = (_local3.m_linearVelocity.x + (_local3.m_invMass * _local25)); _local3.m_linearVelocity.y = (_local3.m_linearVelocity.y + (_local3.m_invMass * _local26)); _local3.m_angularVelocity = (_local3.m_angularVelocity + (_local3.m_invI * ((_local8 * _local26) - (_local9 * _local25)))); } else { m_force = 0; m_limitForce1 = 0; m_limitForce2 = 0; }; } override public function GetReactionTorque():Number{ return (0); } public function GetRatio():Number{ return (m_ratio); } override public function SolveVelocityConstraints(_arg1:b2TimeStep):void{ var _local4:b2Mat22; var _local10:Number; var _local11:Number; var _local12:Number; var _local13:Number; var _local14:Number; var _local15:Number; var _local16:Number; var _local17:Number; var _local18:Number; var _local19:Number; var _local20:Number; var _local2:b2Body = m_body1; var _local3:b2Body = m_body2; _local4 = _local2.m_xf.R; var _local5:Number = (m_localAnchor1.x - _local2.m_sweep.localCenter.x); var _local6:Number = (m_localAnchor1.y - _local2.m_sweep.localCenter.y); var _local7:Number = ((_local4.col1.x * _local5) + (_local4.col2.x * _local6)); _local6 = ((_local4.col1.y * _local5) + (_local4.col2.y * _local6)); _local5 = _local7; _local4 = _local3.m_xf.R; var _local8:Number = (m_localAnchor2.x - _local3.m_sweep.localCenter.x); var _local9:Number = (m_localAnchor2.y - _local3.m_sweep.localCenter.y); _local7 = ((_local4.col1.x * _local8) + (_local4.col2.x * _local9)); _local9 = ((_local4.col1.y * _local8) + (_local4.col2.y * _local9)); _local8 = _local7; if (m_state == e_atUpperLimit){ _local10 = (_local2.m_linearVelocity.x + (-(_local2.m_angularVelocity) * _local6)); _local11 = (_local2.m_linearVelocity.y + (_local2.m_angularVelocity * _local5)); _local12 = (_local3.m_linearVelocity.x + (-(_local3.m_angularVelocity) * _local9)); _local13 = (_local3.m_linearVelocity.y + (_local3.m_angularVelocity * _local8)); _local18 = (-(((m_u1.x * _local10) + (m_u1.y * _local11))) - (m_ratio * ((m_u2.x * _local12) + (m_u2.y * _local13)))); _local19 = ((-(_arg1.inv_dt) * m_pulleyMass) * _local18); _local20 = m_force; m_force = b2Math.b2Max(0, (m_force + _local19)); _local19 = (m_force - _local20); _local14 = ((-(_arg1.dt) * _local19) * m_u1.x); _local15 = ((-(_arg1.dt) * _local19) * m_u1.y); _local16 = (((-(_arg1.dt) * m_ratio) * _local19) * m_u2.x); _local17 = (((-(_arg1.dt) * m_ratio) * _local19) * m_u2.y); _local2.m_linearVelocity.x = (_local2.m_linearVelocity.x + (_local2.m_invMass * _local14)); _local2.m_linearVelocity.y = (_local2.m_linearVelocity.y + (_local2.m_invMass * _local15)); _local2.m_angularVelocity = (_local2.m_angularVelocity + (_local2.m_invI * ((_local5 * _local15) - (_local6 * _local14)))); _local3.m_linearVelocity.x = (_local3.m_linearVelocity.x + (_local3.m_invMass * _local16)); _local3.m_linearVelocity.y = (_local3.m_linearVelocity.y + (_local3.m_invMass * _local17)); _local3.m_angularVelocity = (_local3.m_angularVelocity + (_local3.m_invI * ((_local8 * _local17) - (_local9 * _local16)))); }; if (m_limitState1 == e_atUpperLimit){ _local10 = (_local2.m_linearVelocity.x + (-(_local2.m_angularVelocity) * _local6)); _local11 = (_local2.m_linearVelocity.y + (_local2.m_angularVelocity * _local5)); _local18 = -(((m_u1.x * _local10) + (m_u1.y * _local11))); _local19 = ((-(_arg1.inv_dt) * m_limitMass1) * _local18); _local20 = m_limitForce1; m_limitForce1 = b2Math.b2Max(0, (m_limitForce1 + _local19)); _local19 = (m_limitForce1 - _local20); _local14 = ((-(_arg1.dt) * _local19) * m_u1.x); _local15 = ((-(_arg1.dt) * _local19) * m_u1.y); _local2.m_linearVelocity.x = (_local2.m_linearVelocity.x + (_local2.m_invMass * _local14)); _local2.m_linearVelocity.y = (_local2.m_linearVelocity.y + (_local2.m_invMass * _local15)); _local2.m_angularVelocity = (_local2.m_angularVelocity + (_local2.m_invI * ((_local5 * _local15) - (_local6 * _local14)))); }; if (m_limitState2 == e_atUpperLimit){ _local12 = (_local3.m_linearVelocity.x + (-(_local3.m_angularVelocity) * _local9)); _local13 = (_local3.m_linearVelocity.y + (_local3.m_angularVelocity * _local8)); _local18 = -(((m_u2.x * _local12) + (m_u2.y * _local13))); _local19 = ((-(_arg1.inv_dt) * m_limitMass2) * _local18); _local20 = m_limitForce2; m_limitForce2 = b2Math.b2Max(0, (m_limitForce2 + _local19)); _local19 = (m_limitForce2 - _local20); _local16 = ((-(_arg1.dt) * _local19) * m_u2.x); _local17 = ((-(_arg1.dt) * _local19) * m_u2.y); _local3.m_linearVelocity.x = (_local3.m_linearVelocity.x + (_local3.m_invMass * _local16)); _local3.m_linearVelocity.y = (_local3.m_linearVelocity.y + (_local3.m_invMass * _local17)); _local3.m_angularVelocity = (_local3.m_angularVelocity + (_local3.m_invI * ((_local8 * _local17) - (_local9 * _local16)))); }; } public function GetLength1():Number{ var _local1:b2Vec2 = m_body1.GetWorldPoint(m_localAnchor1); var _local2:Number = (m_ground.m_xf.position.x + m_groundAnchor1.x); var _local3:Number = (m_ground.m_xf.position.y + m_groundAnchor1.y); var _local4:Number = (_local1.x - _local2); var _local5:Number = (_local1.y - _local3); return (Math.sqrt(((_local4 * _local4) + (_local5 * _local5)))); } public function GetLength2():Number{ var _local1:b2Vec2 = m_body2.GetWorldPoint(m_localAnchor2); var _local2:Number = (m_ground.m_xf.position.x + m_groundAnchor2.x); var _local3:Number = (m_ground.m_xf.position.y + m_groundAnchor2.y); var _local4:Number = (_local1.x - _local2); var _local5:Number = (_local1.y - _local3); return (Math.sqrt(((_local4 * _local4) + (_local5 * _local5)))); } public function GetGroundAnchor1():b2Vec2{ var _local1:b2Vec2 = m_ground.m_xf.position.Copy(); _local1.Add(m_groundAnchor1); return (_local1); } } }//package Box2D.Dynamics.Joints
Section 108
//b2PulleyJointDef (Box2D.Dynamics.Joints.b2PulleyJointDef) package Box2D.Dynamics.Joints { import Box2D.Common.Math.*; import Box2D.Dynamics.*; public class b2PulleyJointDef extends b2JointDef { public var maxLength1:Number; public var maxLength2:Number; public var length1:Number; public var localAnchor1:b2Vec2; public var localAnchor2:b2Vec2; public var groundAnchor1:b2Vec2; public var groundAnchor2:b2Vec2; public var ratio:Number; public var length2:Number; public function b2PulleyJointDef(){ groundAnchor1 = new b2Vec2(); groundAnchor2 = new b2Vec2(); localAnchor1 = new b2Vec2(); localAnchor2 = new b2Vec2(); super(); type = b2Joint.e_pulleyJoint; groundAnchor1.Set(-1, 1); groundAnchor2.Set(1, 1); localAnchor1.Set(-1, 0); localAnchor2.Set(1, 0); length1 = 0; maxLength1 = 0; length2 = 0; maxLength2 = 0; ratio = 1; collideConnected = true; } public function Initialize(_arg1:b2Body, _arg2:b2Body, _arg3:b2Vec2, _arg4:b2Vec2, _arg5:b2Vec2, _arg6:b2Vec2, _arg7:Number):void{ body1 = _arg1; body2 = _arg2; groundAnchor1.SetV(_arg3); groundAnchor2.SetV(_arg4); localAnchor1 = body1.GetLocalPoint(_arg5); localAnchor2 = body2.GetLocalPoint(_arg6); var _local8:Number = (_arg5.x - _arg3.x); var _local9:Number = (_arg5.y - _arg3.y); length1 = Math.sqrt(((_local8 * _local8) + (_local9 * _local9))); var _local10:Number = (_arg6.x - _arg4.x); var _local11:Number = (_arg6.y - _arg4.y); length2 = Math.sqrt(((_local10 * _local10) + (_local11 * _local11))); ratio = _arg7; var _local12:Number = (length1 + (ratio * length2)); maxLength1 = (_local12 - (ratio * b2PulleyJoint.b2_minPulleyLength)); maxLength2 = ((_local12 - b2PulleyJoint.b2_minPulleyLength) / ratio); } } }//package Box2D.Dynamics.Joints
Section 109
//b2RevoluteJoint (Box2D.Dynamics.Joints.b2RevoluteJoint) package Box2D.Dynamics.Joints { import Box2D.Common.Math.*; import Box2D.Dynamics.*; import Box2D.Common.*; public class b2RevoluteJoint extends b2Joint { public var m_limitForce:Number; public var m_pivotMass:b2Mat22; public var m_motorForce:Number; public var m_enableLimit:Boolean; public var m_limitState:int; public var m_motorMass:Number; public var m_localAnchor1:b2Vec2; public var m_localAnchor2:b2Vec2; private var K1:b2Mat22; private var K2:b2Mat22; private var K3:b2Mat22; private var K:b2Mat22; public var m_pivotForce:b2Vec2; public var m_enableMotor:Boolean; public var m_referenceAngle:Number; public var m_limitPositionImpulse:Number; public var m_motorSpeed:Number; public var m_upperAngle:Number; public var m_lowerAngle:Number; public var m_maxMotorTorque:Number; public static var tImpulse:b2Vec2 = new b2Vec2(); public function b2RevoluteJoint(_arg1:b2RevoluteJointDef){ K = new b2Mat22(); K1 = new b2Mat22(); K2 = new b2Mat22(); K3 = new b2Mat22(); m_localAnchor1 = new b2Vec2(); m_localAnchor2 = new b2Vec2(); m_pivotForce = new b2Vec2(); m_pivotMass = new b2Mat22(); super(_arg1); m_localAnchor1.SetV(_arg1.localAnchor1); m_localAnchor2.SetV(_arg1.localAnchor2); m_referenceAngle = _arg1.referenceAngle; m_pivotForce.Set(0, 0); m_motorForce = 0; m_limitForce = 0; m_limitPositionImpulse = 0; m_lowerAngle = _arg1.lowerAngle; m_upperAngle = _arg1.upperAngle; m_maxMotorTorque = _arg1.maxMotorTorque; m_motorSpeed = _arg1.motorSpeed; m_enableLimit = _arg1.enableLimit; m_enableMotor = _arg1.enableMotor; } override public function SolveVelocityConstraints(_arg1:b2TimeStep):void{ var _local4:b2Mat22; var _local5:Number; var _local10:Number; var _local16:Number; var _local17:Number; var _local18:Number; var _local19:Number; var _local20:Number; var _local21:Number; var _local2:b2Body = m_body1; var _local3:b2Body = m_body2; _local4 = _local2.m_xf.R; var _local6:Number = (m_localAnchor1.x - _local2.m_sweep.localCenter.x); var _local7:Number = (m_localAnchor1.y - _local2.m_sweep.localCenter.y); _local5 = ((_local4.col1.x * _local6) + (_local4.col2.x * _local7)); _local7 = ((_local4.col1.y * _local6) + (_local4.col2.y * _local7)); _local6 = _local5; _local4 = _local3.m_xf.R; var _local8:Number = (m_localAnchor2.x - _local3.m_sweep.localCenter.x); var _local9:Number = (m_localAnchor2.y - _local3.m_sweep.localCenter.y); _local5 = ((_local4.col1.x * _local8) + (_local4.col2.x * _local9)); _local9 = ((_local4.col1.y * _local8) + (_local4.col2.y * _local9)); _local8 = _local5; var _local11:Number = (((_local3.m_linearVelocity.x + (-(_local3.m_angularVelocity) * _local9)) - _local2.m_linearVelocity.x) - (-(_local2.m_angularVelocity) * _local7)); var _local12:Number = (((_local3.m_linearVelocity.y + (_local3.m_angularVelocity * _local8)) - _local2.m_linearVelocity.y) - (_local2.m_angularVelocity * _local6)); var _local13:Number = (-(_arg1.inv_dt) * ((m_pivotMass.col1.x * _local11) + (m_pivotMass.col2.x * _local12))); var _local14:Number = (-(_arg1.inv_dt) * ((m_pivotMass.col1.y * _local11) + (m_pivotMass.col2.y * _local12))); m_pivotForce.x = (m_pivotForce.x + _local13); m_pivotForce.y = (m_pivotForce.y + _local14); var _local15:Number = (_arg1.dt * _local13); _local16 = (_arg1.dt * _local14); _local2.m_linearVelocity.x = (_local2.m_linearVelocity.x - (_local2.m_invMass * _local15)); _local2.m_linearVelocity.y = (_local2.m_linearVelocity.y - (_local2.m_invMass * _local16)); _local2.m_angularVelocity = (_local2.m_angularVelocity - (_local2.m_invI * ((_local6 * _local16) - (_local7 * _local15)))); _local3.m_linearVelocity.x = (_local3.m_linearVelocity.x + (_local3.m_invMass * _local15)); _local3.m_linearVelocity.y = (_local3.m_linearVelocity.y + (_local3.m_invMass * _local16)); _local3.m_angularVelocity = (_local3.m_angularVelocity + (_local3.m_invI * ((_local8 * _local16) - (_local9 * _local15)))); if (((m_enableMotor) && (!((m_limitState == e_equalLimits))))){ _local17 = ((_local3.m_angularVelocity - _local2.m_angularVelocity) - m_motorSpeed); _local18 = ((-(_arg1.inv_dt) * m_motorMass) * _local17); _local19 = m_motorForce; m_motorForce = b2Math.b2Clamp((m_motorForce + _local18), -(m_maxMotorTorque), m_maxMotorTorque); _local18 = (m_motorForce - _local19); _local2.m_angularVelocity = (_local2.m_angularVelocity - ((_local2.m_invI * _arg1.dt) * _local18)); _local3.m_angularVelocity = (_local3.m_angularVelocity + ((_local3.m_invI * _arg1.dt) * _local18)); }; if (((m_enableLimit) && (!((m_limitState == e_inactiveLimit))))){ _local20 = (_local3.m_angularVelocity - _local2.m_angularVelocity); _local21 = ((-(_arg1.inv_dt) * m_motorMass) * _local20); if (m_limitState == e_equalLimits){ m_limitForce = (m_limitForce + _local21); } else { if (m_limitState == e_atLowerLimit){ _local10 = m_limitForce; m_limitForce = b2Math.b2Max((m_limitForce + _local21), 0); _local21 = (m_limitForce - _local10); } else { if (m_limitState == e_atUpperLimit){ _local10 = m_limitForce; m_limitForce = b2Math.b2Min((m_limitForce + _local21), 0); _local21 = (m_limitForce - _local10); }; }; }; _local2.m_angularVelocity = (_local2.m_angularVelocity - ((_local2.m_invI * _arg1.dt) * _local21)); _local3.m_angularVelocity = (_local3.m_angularVelocity + ((_local3.m_invI * _arg1.dt) * _local21)); }; } override public function GetAnchor1():b2Vec2{ return (m_body1.GetWorldPoint(m_localAnchor1)); } override public function GetAnchor2():b2Vec2{ return (m_body2.GetWorldPoint(m_localAnchor2)); } public function GetUpperLimit():Number{ return (m_upperAngle); } public function GetLowerLimit():Number{ return (m_lowerAngle); } public function EnableMotor(_arg1:Boolean):void{ m_enableMotor = _arg1; } public function GetMotorSpeed():Number{ return (m_motorSpeed); } override public function GetReactionForce():b2Vec2{ return (m_pivotForce); } override public function SolvePositionConstraints():Boolean{ var _local1:Number; var _local2:Number; var _local6:b2Mat22; var _local25:Number; var _local26:Number; var _local3:b2Body = m_body1; var _local4:b2Body = m_body2; var _local5:Number = 0; _local6 = _local3.m_xf.R; var _local7:Number = (m_localAnchor1.x - _local3.m_sweep.localCenter.x); var _local8:Number = (m_localAnchor1.y - _local3.m_sweep.localCenter.y); var _local9:Number = ((_local6.col1.x * _local7) + (_local6.col2.x * _local8)); _local8 = ((_local6.col1.y * _local7) + (_local6.col2.y * _local8)); _local7 = _local9; _local6 = _local4.m_xf.R; var _local10:Number = (m_localAnchor2.x - _local4.m_sweep.localCenter.x); var _local11:Number = (m_localAnchor2.y - _local4.m_sweep.localCenter.y); _local9 = ((_local6.col1.x * _local10) + (_local6.col2.x * _local11)); _local11 = ((_local6.col1.y * _local10) + (_local6.col2.y * _local11)); _local10 = _local9; var _local12:Number = (_local3.m_sweep.c.x + _local7); var _local13:Number = (_local3.m_sweep.c.y + _local8); var _local14:Number = (_local4.m_sweep.c.x + _local10); var _local15:Number = (_local4.m_sweep.c.y + _local11); var _local16:Number = (_local14 - _local12); var _local17:Number = (_local15 - _local13); _local5 = Math.sqrt(((_local16 * _local16) + (_local17 * _local17))); var _local18:Number = _local3.m_invMass; var _local19:Number = _local4.m_invMass; var _local20:Number = _local3.m_invI; var _local21:Number = _local4.m_invI; K1.col1.x = (_local18 + _local19); K1.col2.x = 0; K1.col1.y = 0; K1.col2.y = (_local18 + _local19); K2.col1.x = ((_local20 * _local8) * _local8); K2.col2.x = ((-(_local20) * _local7) * _local8); K2.col1.y = ((-(_local20) * _local7) * _local8); K2.col2.y = ((_local20 * _local7) * _local7); K3.col1.x = ((_local21 * _local11) * _local11); K3.col2.x = ((-(_local21) * _local10) * _local11); K3.col1.y = ((-(_local21) * _local10) * _local11); K3.col2.y = ((_local21 * _local10) * _local10); K.SetM(K1); K.AddM(K2); K.AddM(K3); K.Solve(tImpulse, -(_local16), -(_local17)); var _local22:Number = tImpulse.x; var _local23:Number = tImpulse.y; _local3.m_sweep.c.x = (_local3.m_sweep.c.x - (_local3.m_invMass * _local22)); _local3.m_sweep.c.y = (_local3.m_sweep.c.y - (_local3.m_invMass * _local23)); _local3.m_sweep.a = (_local3.m_sweep.a - (_local3.m_invI * ((_local7 * _local23) - (_local8 * _local22)))); _local4.m_sweep.c.x = (_local4.m_sweep.c.x + (_local4.m_invMass * _local22)); _local4.m_sweep.c.y = (_local4.m_sweep.c.y + (_local4.m_invMass * _local23)); _local4.m_sweep.a = (_local4.m_sweep.a + (_local4.m_invI * ((_local10 * _local23) - (_local11 * _local22)))); _local3.SynchronizeTransform(); _local4.SynchronizeTransform(); var _local24:Number = 0; if (((m_enableLimit) && (!((m_limitState == e_inactiveLimit))))){ _local25 = ((_local4.m_sweep.a - _local3.m_sweep.a) - m_referenceAngle); _local26 = 0; if (m_limitState == e_equalLimits){ _local2 = b2Math.b2Clamp(_local25, -(b2Settings.b2_maxAngularCorrection), b2Settings.b2_maxAngularCorrection); _local26 = (-(m_motorMass) * _local2); _local24 = b2Math.b2Abs(_local2); } else { if (m_limitState == e_atLowerLimit){ _local2 = (_local25 - m_lowerAngle); _local24 = b2Math.b2Max(0, -(_local2)); _local2 = b2Math.b2Clamp((_local2 + b2Settings.b2_angularSlop), -(b2Settings.b2_maxAngularCorrection), 0); _local26 = (-(m_motorMass) * _local2); _local1 = m_limitPositionImpulse; m_limitPositionImpulse = b2Math.b2Max((m_limitPositionImpulse + _local26), 0); _local26 = (m_limitPositionImpulse - _local1); } else { if (m_limitState == e_atUpperLimit){ _local2 = (_local25 - m_upperAngle); _local24 = b2Math.b2Max(0, _local2); _local2 = b2Math.b2Clamp((_local2 - b2Settings.b2_angularSlop), 0, b2Settings.b2_maxAngularCorrection); _local26 = (-(m_motorMass) * _local2); _local1 = m_limitPositionImpulse; m_limitPositionImpulse = b2Math.b2Min((m_limitPositionImpulse + _local26), 0); _local26 = (m_limitPositionImpulse - _local1); }; }; }; _local3.m_sweep.a = (_local3.m_sweep.a - (_local3.m_invI * _local26)); _local4.m_sweep.a = (_local4.m_sweep.a + (_local4.m_invI * _local26)); _local3.SynchronizeTransform(); _local4.SynchronizeTransform(); }; return ((((_local5 <= b2Settings.b2_linearSlop)) && ((_local24 <= b2Settings.b2_angularSlop)))); } public function SetMotorSpeed(_arg1:Number):void{ m_motorSpeed = _arg1; } public function GetJointSpeed():Number{ return ((m_body2.m_angularVelocity - m_body1.m_angularVelocity)); } public function SetMaxMotorTorque(_arg1:Number):void{ m_maxMotorTorque = _arg1; } public function GetJointAngle():Number{ return (((m_body2.m_sweep.a - m_body1.m_sweep.a) - m_referenceAngle)); } public function GetMotorTorque():Number{ return (m_motorForce); } override public function InitVelocityConstraints(_arg1:b2TimeStep):void{ var _local2:b2Body; var _local3:b2Body; var _local4:b2Mat22; var _local5:Number; var _local7:Number; var _local14:Number; _local2 = m_body1; _local3 = m_body2; _local4 = _local2.m_xf.R; var _local6:Number = (m_localAnchor1.x - _local2.m_sweep.localCenter.x); _local7 = (m_localAnchor1.y - _local2.m_sweep.localCenter.y); _local5 = ((_local4.col1.x * _local6) + (_local4.col2.x * _local7)); _local7 = ((_local4.col1.y * _local6) + (_local4.col2.y * _local7)); _local6 = _local5; _local4 = _local3.m_xf.R; var _local8:Number = (m_localAnchor2.x - _local3.m_sweep.localCenter.x); var _local9:Number = (m_localAnchor2.y - _local3.m_sweep.localCenter.y); _local5 = ((_local4.col1.x * _local8) + (_local4.col2.x * _local9)); _local9 = ((_local4.col1.y * _local8) + (_local4.col2.y * _local9)); _local8 = _local5; var _local10:Number = _local2.m_invMass; var _local11:Number = _local3.m_invMass; var _local12:Number = _local2.m_invI; var _local13:Number = _local3.m_invI; K1.col1.x = (_local10 + _local11); K1.col2.x = 0; K1.col1.y = 0; K1.col2.y = (_local10 + _local11); K2.col1.x = ((_local12 * _local7) * _local7); K2.col2.x = ((-(_local12) * _local6) * _local7); K2.col1.y = ((-(_local12) * _local6) * _local7); K2.col2.y = ((_local12 * _local6) * _local6); K3.col1.x = ((_local13 * _local9) * _local9); K3.col2.x = ((-(_local13) * _local8) * _local9); K3.col1.y = ((-(_local13) * _local8) * _local9); K3.col2.y = ((_local13 * _local8) * _local8); K.SetM(K1); K.AddM(K2); K.AddM(K3); K.Invert(m_pivotMass); m_motorMass = (1 / (_local12 + _local13)); if (m_enableMotor == false){ m_motorForce = 0; }; if (m_enableLimit){ _local14 = ((_local3.m_sweep.a - _local2.m_sweep.a) - m_referenceAngle); if (b2Math.b2Abs((m_upperAngle - m_lowerAngle)) < (2 * b2Settings.b2_angularSlop)){ m_limitState = e_equalLimits; } else { if (_local14 <= m_lowerAngle){ if (m_limitState != e_atLowerLimit){ m_limitForce = 0; }; m_limitState = e_atLowerLimit; } else { if (_local14 >= m_upperAngle){ if (m_limitState != e_atUpperLimit){ m_limitForce = 0; }; m_limitState = e_atUpperLimit; } else { m_limitState = e_inactiveLimit; m_limitForce = 0; }; }; }; } else { m_limitForce = 0; }; if (_arg1.warmStarting){ _local2.m_linearVelocity.x = (_local2.m_linearVelocity.x - ((_arg1.dt * _local10) * m_pivotForce.x)); _local2.m_linearVelocity.y = (_local2.m_linearVelocity.y - ((_arg1.dt * _local10) * m_pivotForce.y)); _local2.m_angularVelocity = (_local2.m_angularVelocity - ((_arg1.dt * _local12) * ((((_local6 * m_pivotForce.y) - (_local7 * m_pivotForce.x)) + m_motorForce) + m_limitForce))); _local3.m_linearVelocity.x = (_local3.m_linearVelocity.x + ((_arg1.dt * _local11) * m_pivotForce.x)); _local3.m_linearVelocity.y = (_local3.m_linearVelocity.y + ((_arg1.dt * _local11) * m_pivotForce.y)); _local3.m_angularVelocity = (_local3.m_angularVelocity + ((_arg1.dt * _local13) * ((((_local8 * m_pivotForce.y) - (_local9 * m_pivotForce.x)) + m_motorForce) + m_limitForce))); } else { m_pivotForce.SetZero(); m_motorForce = 0; m_limitForce = 0; }; m_limitPositionImpulse = 0; } public function EnableLimit(_arg1:Boolean):void{ m_enableLimit = _arg1; } override public function GetReactionTorque():Number{ return (m_limitForce); } public function IsLimitEnabled():Boolean{ return (m_enableLimit); } public function IsMotorEnabled():Boolean{ return (m_enableMotor); } public function SetLimits(_arg1:Number, _arg2:Number):void{ m_lowerAngle = _arg1; m_upperAngle = _arg2; } } }//package Box2D.Dynamics.Joints
Section 110
//b2RevoluteJointDef (Box2D.Dynamics.Joints.b2RevoluteJointDef) package Box2D.Dynamics.Joints { import Box2D.Common.Math.*; import Box2D.Dynamics.*; public class b2RevoluteJointDef extends b2JointDef { public var upperAngle:Number; public var enableMotor:Boolean; public var referenceAngle:Number; public var motorSpeed:Number; public var localAnchor1:b2Vec2; public var localAnchor2:b2Vec2; public var enableLimit:Boolean; public var lowerAngle:Number; public var maxMotorTorque:Number; public function b2RevoluteJointDef(){ localAnchor1 = new b2Vec2(); localAnchor2 = new b2Vec2(); super(); type = b2Joint.e_revoluteJoint; localAnchor1.Set(0, 0); localAnchor2.Set(0, 0); referenceAngle = 0; lowerAngle = 0; upperAngle = 0; maxMotorTorque = 0; motorSpeed = 0; enableLimit = false; enableMotor = false; } public function Initialize(_arg1:b2Body, _arg2:b2Body, _arg3:b2Vec2):void{ body1 = _arg1; body2 = _arg2; localAnchor1 = body1.GetLocalPoint(_arg3); localAnchor2 = body2.GetLocalPoint(_arg3); referenceAngle = (body2.GetAngle() - body1.GetAngle()); } } }//package Box2D.Dynamics.Joints
Section 111
//b2Body (Box2D.Dynamics.b2Body) package Box2D.Dynamics { import flash.events.*; import Box2D.Collision.Shapes.*; import Box2D.Common.Math.*; import Box2D.Dynamics.Joints.*; import Box2D.Dynamics.Contacts.*; public class b2Body extends EventDispatcher { public var m_next:b2Body; public var m_xf:b2XForm; public var m_contactList:b2ContactEdge; public var m_angularVelocity:Number; public var m_shapeList:b2Shape; public var m_force:b2Vec2; public var m_mass:Number; public var m_sweep:b2Sweep; public var m_torque:Number; public var m_userData; public var m_flags:uint; public var m_world:b2World; public var m_prev:b2Body; public var m_invMass:Number; public var m_type:int; public var m_linearDamping:Number; public var m_shapeCount:int; public var m_angularDamping:Number; public var m_invI:Number; public var m_linearVelocity:b2Vec2; public var m_sleepTime:Number; public var m_jointList:b2JointEdge; public var m_I:Number; public static var e_fixedRotationFlag:uint = 64; public static var e_frozenFlag:uint = 2; public static var e_maxTypes:uint = 3; public static var e_sleepFlag:uint = 8; private static var s_massData:b2MassData = new b2MassData(); public static var e_bulletFlag:uint = 32; public static var e_staticType:uint = 1; public static var e_islandFlag:uint = 4; public static var e_allowSleepFlag:uint = 16; private static var s_xf1:b2XForm = new b2XForm(); public static var e_dynamicType:uint = 2; public function b2Body(_arg1:b2BodyDef, _arg2:b2World){ m_xf = new b2XForm(); m_sweep = new b2Sweep(); m_linearVelocity = new b2Vec2(); m_force = new b2Vec2(); super(); m_flags = 0; if (_arg1.isBullet){ m_flags = (m_flags | e_bulletFlag); }; if (_arg1.fixedRotation){ m_flags = (m_flags | e_fixedRotationFlag); }; if (_arg1.allowSleep){ m_flags = (m_flags | e_allowSleepFlag); }; if (_arg1.isSleeping){ m_flags = (m_flags | e_sleepFlag); }; m_world = _arg2; m_xf.position.SetV(_arg1.position); m_xf.R.Set(_arg1.angle); m_sweep.localCenter.SetV(_arg1.massData.center); m_sweep.t0 = 1; m_sweep.a0 = (m_sweep.a = _arg1.angle); var _local3:b2Mat22 = m_xf.R; var _local4:b2Vec2 = m_sweep.localCenter; m_sweep.c.x = ((_local3.col1.x * _local4.x) + (_local3.col2.x * _local4.y)); m_sweep.c.y = ((_local3.col1.y * _local4.x) + (_local3.col2.y * _local4.y)); m_sweep.c.x = (m_sweep.c.x + m_xf.position.x); m_sweep.c.y = (m_sweep.c.y + m_xf.position.y); m_sweep.c0.SetV(m_sweep.c); m_jointList = null; m_contactList = null; m_prev = null; m_next = null; m_linearDamping = _arg1.linearDamping; m_angularDamping = _arg1.angularDamping; m_force.Set(0, 0); m_torque = 0; m_linearVelocity.SetZero(); m_angularVelocity = 0; m_sleepTime = 0; m_invMass = 0; m_I = 0; m_invI = 0; m_mass = _arg1.massData.mass; if (m_mass > 0){ m_invMass = (1 / m_mass); }; if ((m_flags & b2Body.e_fixedRotationFlag) == 0){ m_I = _arg1.massData.I; }; if (m_I > 0){ m_invI = (1 / m_I); }; if ((((m_invMass == 0)) && ((m_invI == 0)))){ m_type = e_staticType; } else { m_type = e_dynamicType; }; m_userData = _arg1.userData; m_shapeList = null; m_shapeCount = 0; } public function GetLinearVelocityFromWorldPoint(_arg1:b2Vec2):b2Vec2{ return (new b2Vec2((m_linearVelocity.x - (m_angularVelocity * (_arg1.y - m_sweep.c.y))), (m_linearVelocity.y + (m_angularVelocity * (_arg1.x - m_sweep.c.x))))); } public function SetLinearVelocity(_arg1:b2Vec2):void{ m_linearVelocity.SetV(_arg1); } public function WakeUp():void{ dispatchEvent(new Event("wakeup")); m_flags = (m_flags & ~(e_sleepFlag)); m_sleepTime = 0; } public function GetLocalCenter():b2Vec2{ return (m_sweep.localCenter); } public function ApplyTorque(_arg1:Number):void{ if (IsSleeping()){ WakeUp(); }; m_torque = (m_torque + _arg1); } public function IsFrozen():Boolean{ return (((m_flags & e_frozenFlag) == e_frozenFlag)); } public function IsDynamic():Boolean{ return ((m_type == e_dynamicType)); } public function GetLinearVelocity():b2Vec2{ return (m_linearVelocity); } public function SynchronizeTransform():void{ m_xf.R.Set(m_sweep.a); var _local1:b2Mat22 = m_xf.R; var _local2:b2Vec2 = m_sweep.localCenter; m_xf.position.x = (m_sweep.c.x - ((_local1.col1.x * _local2.x) + (_local1.col2.x * _local2.y))); m_xf.position.y = (m_sweep.c.y - ((_local1.col1.y * _local2.x) + (_local1.col2.y * _local2.y))); } public function GetInertia():Number{ return (m_I); } public function IsSleeping():Boolean{ return (((m_flags & e_sleepFlag) == e_sleepFlag)); } public function SetMassFromShapes():void{ var _local1:b2Shape; if (m_world.m_lock == true){ return; }; m_mass = 0; m_invMass = 0; m_I = 0; m_invI = 0; var _local2:Number = 0; var _local3:Number = 0; var _local4:b2MassData = s_massData; _local1 = m_shapeList; while (_local1) { _local1.ComputeMass(_local4); m_mass = (m_mass + _local4.mass); _local2 = (_local2 + (_local4.mass * _local4.center.x)); _local3 = (_local3 + (_local4.mass * _local4.center.y)); m_I = (m_I + _local4.I); _local1 = _local1.m_next; }; if (m_mass > 0){ m_invMass = (1 / m_mass); _local2 = (_local2 * m_invMass); _local3 = (_local3 * m_invMass); }; if ((((m_I > 0)) && (((m_flags & e_fixedRotationFlag) == 0)))){ m_I = (m_I - (m_mass * ((_local2 * _local2) + (_local3 * _local3)))); m_invI = (1 / m_I); } else { m_I = 0; m_invI = 0; }; m_sweep.localCenter.Set(_local2, _local3); var _local5:b2Mat22 = m_xf.R; var _local6:b2Vec2 = m_sweep.localCenter; m_sweep.c.x = ((_local5.col1.x * _local6.x) + (_local5.col2.x * _local6.y)); m_sweep.c.y = ((_local5.col1.y * _local6.x) + (_local5.col2.y * _local6.y)); m_sweep.c.x = (m_sweep.c.x + m_xf.position.x); m_sweep.c.y = (m_sweep.c.y + m_xf.position.y); m_sweep.c0.SetV(m_sweep.c); _local1 = m_shapeList; while (_local1) { _local1.UpdateSweepRadius(m_sweep.localCenter); _local1 = _local1.m_next; }; var _local7:int = m_type; if ((((m_invMass == 0)) && ((m_invI == 0)))){ m_type = e_staticType; } else { m_type = e_dynamicType; }; if (_local7 != m_type){ _local1 = m_shapeList; while (_local1) { _local1.RefilterProxy(m_world.m_broadPhase, m_xf); _local1 = _local1.m_next; }; }; } public function PutToSleep():void{ m_flags = (m_flags | e_sleepFlag); m_sleepTime = 0; m_linearVelocity.SetZero(); m_angularVelocity = 0; m_force.SetZero(); m_torque = 0; } public function GetJointList():b2JointEdge{ return (m_jointList); } public function SetXForm(_arg1:b2Vec2, _arg2:Number):Boolean{ var _local3:b2Shape; var _local7:Boolean; if (m_world.m_lock == true){ return (true); }; if (IsFrozen()){ return (false); }; m_xf.R.Set(_arg2); m_xf.position.SetV(_arg1); var _local4:b2Mat22 = m_xf.R; var _local5:b2Vec2 = m_sweep.localCenter; m_sweep.c.x = ((_local4.col1.x * _local5.x) + (_local4.col2.x * _local5.y)); m_sweep.c.y = ((_local4.col1.y * _local5.x) + (_local4.col2.y * _local5.y)); m_sweep.c.x = (m_sweep.c.x + m_xf.position.x); m_sweep.c.y = (m_sweep.c.y + m_xf.position.y); m_sweep.c0.SetV(m_sweep.c); m_sweep.a0 = (m_sweep.a = _arg2); var _local6:Boolean; _local3 = m_shapeList; while (_local3) { _local7 = _local3.Synchronize(m_world.m_broadPhase, m_xf, m_xf); if (_local7 == false){ _local6 = true; break; }; _local3 = _local3.m_next; }; if (_local6 == true){ m_flags = (m_flags | e_frozenFlag); m_linearVelocity.SetZero(); m_angularVelocity = 0; _local3 = m_shapeList; while (_local3) { _local3.DestroyProxy(m_world.m_broadPhase); _local3 = _local3.m_next; }; return (false); }; m_world.m_broadPhase.Commit(); return (true); } public function GetLocalPoint(_arg1:b2Vec2):b2Vec2{ return (b2Math.b2MulXT(m_xf, _arg1)); } public function ApplyForce(_arg1:b2Vec2, _arg2:b2Vec2):void{ if (IsSleeping()){ WakeUp(); }; m_force.x = (m_force.x + _arg1.x); m_force.y = (m_force.y + _arg1.y); m_torque = (m_torque + (((_arg2.x - m_sweep.c.x) * _arg1.y) - ((_arg2.y - m_sweep.c.y) * _arg1.x))); } public function SynchronizeShapes():Boolean{ var _local4:b2Shape; var _local1:b2XForm = s_xf1; _local1.R.Set(m_sweep.a0); var _local2:b2Mat22 = _local1.R; var _local3:b2Vec2 = m_sweep.localCenter; _local1.position.x = (m_sweep.c0.x - ((_local2.col1.x * _local3.x) + (_local2.col2.x * _local3.y))); _local1.position.y = (m_sweep.c0.y - ((_local2.col1.y * _local3.x) + (_local2.col2.y * _local3.y))); var _local5:Boolean; _local4 = m_shapeList; while (_local4) { _local5 = _local4.Synchronize(m_world.m_broadPhase, _local1, m_xf); if (_local5 == false){ break; }; _local4 = _local4.m_next; }; if (_local5 == false){ m_flags = (m_flags | e_frozenFlag); m_linearVelocity.SetZero(); m_angularVelocity = 0; _local4 = m_shapeList; while (_local4) { _local4.DestroyProxy(m_world.m_broadPhase); _local4 = _local4.m_next; }; return (false); }; return (true); } public function GetAngle():Number{ return (m_sweep.a); } public function GetXForm():b2XForm{ return (m_xf); } public function GetLinearVelocityFromLocalPoint(_arg1:b2Vec2):b2Vec2{ var _local2:b2Mat22 = m_xf.R; var _local3:b2Vec2 = new b2Vec2(((_local2.col1.x * _arg1.x) + (_local2.col2.x * _arg1.y)), ((_local2.col1.y * _arg1.x) + (_local2.col2.y * _arg1.y))); _local3.x = (_local3.x + m_xf.position.x); _local3.y = (_local3.y + m_xf.position.y); return (new b2Vec2((m_linearVelocity.x + (m_angularVelocity * (_local3.y - m_sweep.c.y))), (m_linearVelocity.x - (m_angularVelocity * (_local3.x - m_sweep.c.x))))); } public function GetNext():b2Body{ return (m_next); } public function GetMass():Number{ return (m_mass); } public function ApplyImpulse(_arg1:b2Vec2, _arg2:b2Vec2):void{ if (IsSleeping()){ WakeUp(); }; m_linearVelocity.x = (m_linearVelocity.x + (m_invMass * _arg1.x)); m_linearVelocity.y = (m_linearVelocity.y + (m_invMass * _arg1.y)); m_angularVelocity = (m_angularVelocity + (m_invI * (((_arg2.x - m_sweep.c.x) * _arg1.y) - ((_arg2.y - m_sweep.c.y) * _arg1.x)))); } public function GetAngularVelocity():Number{ return (m_angularVelocity); } public function SetAngularVelocity(_arg1:Number):void{ m_angularVelocity = _arg1; } public function SetMass(_arg1:b2MassData):void{ var _local2:b2Shape; if (m_world.m_lock == true){ return; }; m_invMass = 0; m_I = 0; m_invI = 0; m_mass = _arg1.mass; if (m_mass > 0){ m_invMass = (1 / m_mass); }; if ((m_flags & b2Body.e_fixedRotationFlag) == 0){ m_I = _arg1.I; }; if (m_I > 0){ m_invI = (1 / m_I); }; m_sweep.localCenter.SetV(_arg1.center); var _local3:b2Mat22 = m_xf.R; var _local4:b2Vec2 = m_sweep.localCenter; m_sweep.c.x = ((_local3.col1.x * _local4.x) + (_local3.col2.x * _local4.y)); m_sweep.c.y = ((_local3.col1.y * _local4.x) + (_local3.col2.y * _local4.y)); m_sweep.c.x = (m_sweep.c.x + m_xf.position.x); m_sweep.c.y = (m_sweep.c.y + m_xf.position.y); m_sweep.c0.SetV(m_sweep.c); _local2 = m_shapeList; while (_local2) { _local2.UpdateSweepRadius(m_sweep.localCenter); _local2 = _local2.m_next; }; var _local5:int = m_type; if ((((m_invMass == 0)) && ((m_invI == 0)))){ m_type = e_staticType; } else { m_type = e_dynamicType; }; if (_local5 != m_type){ _local2 = m_shapeList; while (_local2) { _local2.RefilterProxy(m_world.m_broadPhase, m_xf); _local2 = _local2.m_next; }; }; } public function IsStatic():Boolean{ return ((m_type == e_staticType)); } public function GetWorldVector(_arg1:b2Vec2):b2Vec2{ return (b2Math.b2MulMV(m_xf.R, _arg1)); } public function GetShapeList():b2Shape{ return (m_shapeList); } public function Advance(_arg1:Number):void{ m_sweep.Advance(_arg1); m_sweep.c.SetV(m_sweep.c0); m_sweep.a = m_sweep.a0; SynchronizeTransform(); } public function SetBullet(_arg1:Boolean):void{ if (_arg1){ m_flags = (m_flags | e_bulletFlag); } else { m_flags = (m_flags & ~(e_bulletFlag)); }; } public function CreateShape(_arg1:b2ShapeDef):b2Shape{ var _local2:b2Shape; if (m_world.m_lock == true){ return (null); }; _local2 = b2Shape.Create(_arg1, m_world.m_blockAllocator); _local2.m_next = m_shapeList; m_shapeList = _local2; m_shapeCount++; _local2.m_body = this; _local2.CreateProxy(m_world.m_broadPhase, m_xf); _local2.UpdateSweepRadius(m_sweep.localCenter); return (_local2); } public function IsConnected(_arg1:b2Body):Boolean{ var _local2:b2JointEdge = m_jointList; while (_local2) { if (_local2.other == _arg1){ return ((_local2.joint.m_collideConnected == false)); }; _local2 = _local2.next; }; return (false); } public function DestroyShape(_arg1:b2Shape):void{ if (m_world.m_lock == true){ return; }; _arg1.DestroyProxy(m_world.m_broadPhase); var _local2:b2Shape = m_shapeList; var _local3:b2Shape; var _local4:Boolean; while (_local2 != null) { if (_local2 == _arg1){ if (_local3){ _local3.m_next = _arg1.m_next; } else { m_shapeList = _arg1.m_next; }; _local4 = true; break; }; _local3 = _local2; _local2 = _local2.m_next; }; _arg1.m_body = null; _arg1.m_next = null; m_shapeCount--; b2Shape.Destroy(_arg1, m_world.m_blockAllocator); } public function GetUserData(){ return (m_userData); } public function IsBullet():Boolean{ return (((m_flags & e_bulletFlag) == e_bulletFlag)); } public function GetWorldCenter():b2Vec2{ return (m_sweep.c); } public function AllowSleeping(_arg1:Boolean):void{ if (_arg1){ m_flags = (m_flags | e_allowSleepFlag); } else { m_flags = (m_flags & ~(e_allowSleepFlag)); WakeUp(); }; } public function SetUserData(_arg1):void{ m_userData = _arg1; } public function GetLocalVector(_arg1:b2Vec2):b2Vec2{ return (b2Math.b2MulTMV(m_xf.R, _arg1)); } public function GetWorldPoint(_arg1:b2Vec2):b2Vec2{ var _local2:b2Mat22 = m_xf.R; var _local3:b2Vec2 = new b2Vec2(((_local2.col1.x * _arg1.x) + (_local2.col2.x * _arg1.y)), ((_local2.col1.y * _arg1.x) + (_local2.col2.y * _arg1.y))); _local3.x = (_local3.x + m_xf.position.x); _local3.y = (_local3.y + m_xf.position.y); return (_local3); } public function GetWorld():b2World{ return (m_world); } public function GetPosition():b2Vec2{ return (m_xf.position); } } }//package Box2D.Dynamics
Section 112
//b2BodyDef (Box2D.Dynamics.b2BodyDef) package Box2D.Dynamics { import Box2D.Collision.Shapes.*; import Box2D.Common.Math.*; public class b2BodyDef { public var angularDamping:Number; public var angle:Number; public var isSleeping:Boolean; public var position:b2Vec2; public var isBullet:Boolean; public var allowSleep:Boolean; public var userData; public var fixedRotation:Boolean; public var linearDamping:Number; public var massData:b2MassData; public function b2BodyDef(){ massData = new b2MassData(); position = new b2Vec2(); super(); massData.center.SetZero(); massData.mass = 0; massData.I = 0; userData = null; position.Set(0, 0); angle = 0; linearDamping = 0; angularDamping = 0; allowSleep = true; isSleeping = false; fixedRotation = false; isBullet = false; } } }//package Box2D.Dynamics
Section 113
//b2BoundaryListener (Box2D.Dynamics.b2BoundaryListener) package Box2D.Dynamics { public class b2BoundaryListener { public function Violation(_arg1:b2Body):void{ } } }//package Box2D.Dynamics
Section 114
//b2ContactFilter (Box2D.Dynamics.b2ContactFilter) package Box2D.Dynamics { import Box2D.Collision.Shapes.*; public class b2ContactFilter { public static var b2_defaultFilter:b2ContactFilter = new (b2ContactFilter); ; public function ShouldCollide(_arg1:b2Shape, _arg2:b2Shape):Boolean{ var _local3:b2FilterData = _arg1.GetFilterData(); var _local4:b2FilterData = _arg2.GetFilterData(); if ((((_local3.groupIndex == _local4.groupIndex)) && (!((_local3.groupIndex == 0))))){ return ((_local3.groupIndex > 0)); }; var _local5:Boolean = ((!(((_local3.maskBits & _local4.categoryBits) == 0))) && (!(((_local3.categoryBits & _local4.maskBits) == 0)))); return (_local5); } } }//package Box2D.Dynamics
Section 115
//b2ContactListener (Box2D.Dynamics.b2ContactListener) package Box2D.Dynamics { import Box2D.Collision.*; import Box2D.Dynamics.Contacts.*; public class b2ContactListener { public function Add(_arg1:b2ContactPoint):void{ } public function Remove(_arg1:b2ContactPoint):void{ } public function Persist(_arg1:b2ContactPoint):void{ } public function Result(_arg1:b2ContactResult):void{ } } }//package Box2D.Dynamics
Section 116
//b2ContactManager (Box2D.Dynamics.b2ContactManager) package Box2D.Dynamics { import Box2D.Collision.*; import Box2D.Collision.Shapes.*; import Box2D.Common.Math.*; import Box2D.Common.*; import Box2D.Dynamics.Contacts.*; public class b2ContactManager extends b2PairCallback { public var m_world:b2World; public var m_destroyImmediate:Boolean; public var m_nullContact:b2NullContact; private static const s_evalCP:b2ContactPoint = new b2ContactPoint(); public function b2ContactManager(){ m_nullContact = new b2NullContact(); super(); m_world = null; m_destroyImmediate = false; } override public function PairRemoved(_arg1, _arg2, _arg3):void{ if (_arg3 == null){ return; }; var _local4:b2Contact = (_arg3 as b2Contact); if (_local4 == m_nullContact){ return; }; Destroy(_local4); } public function Destroy(_arg1:b2Contact):void{ var _local7:b2Body; var _local8:b2Body; var _local9:Array; var _local10:b2ContactPoint; var _local11:int; var _local12:b2Manifold; var _local13:int; var _local14:b2ManifoldPoint; var _local15:b2Vec2; var _local16:b2Vec2; var _local2:b2Shape = _arg1.m_shape1; var _local3:b2Shape = _arg1.m_shape2; var _local4:int = _arg1.m_manifoldCount; if ((((_local4 > 0)) && (m_world.m_contactListener))){ _local7 = _local2.m_body; _local8 = _local3.m_body; _local9 = _arg1.GetManifolds(); _local10 = s_evalCP; _local10.shape1 = _arg1.m_shape1; _local10.shape2 = _arg1.m_shape2; _local10.friction = _arg1.m_friction; _local10.restitution = _arg1.m_restitution; _local11 = 0; while (_local11 < _local4) { _local12 = _local9[_local11]; _local10.normal.SetV(_local12.normal); _local13 = 0; while (_local13 < _local12.pointCount) { _local14 = _local12.points[_local13]; _local10.position = _local7.GetWorldPoint(_local14.localPoint1); _local15 = _local7.GetLinearVelocityFromLocalPoint(_local14.localPoint1); _local16 = _local8.GetLinearVelocityFromLocalPoint(_local14.localPoint2); _local10.velocity.Set((_local16.x - _local15.x), (_local16.y - _local15.y)); _local10.separation = _local14.separation; _local10.id.key = _local14.id._key; m_world.m_contactListener.Remove(_local10); _local13++; }; _local11++; }; }; if (_arg1.m_prev){ _arg1.m_prev.m_next = _arg1.m_next; }; if (_arg1.m_next){ _arg1.m_next.m_prev = _arg1.m_prev; }; if (_arg1 == m_world.m_contactList){ m_world.m_contactList = _arg1.m_next; }; var _local5:b2Body = _local2.m_body; var _local6:b2Body = _local3.m_body; if (_arg1.m_node1.prev){ _arg1.m_node1.prev.next = _arg1.m_node1.next; }; if (_arg1.m_node1.next){ _arg1.m_node1.next.prev = _arg1.m_node1.prev; }; if (_arg1.m_node1 == _local5.m_contactList){ _local5.m_contactList = _arg1.m_node1.next; }; if (_arg1.m_node2.prev){ _arg1.m_node2.prev.next = _arg1.m_node2.next; }; if (_arg1.m_node2.next){ _arg1.m_node2.next.prev = _arg1.m_node2.prev; }; if (_arg1.m_node2 == _local6.m_contactList){ _local6.m_contactList = _arg1.m_node2.next; }; b2Contact.Destroy(_arg1, m_world.m_blockAllocator); m_world.m_contactCount--; } override public function PairAdded(_arg1, _arg2){ var _local3:b2Shape = (_arg1 as b2Shape); var _local4:b2Shape = (_arg2 as b2Shape); var _local5:b2Body = _local3.m_body; var _local6:b2Body = _local4.m_body; if (((_local5.IsStatic()) && (_local6.IsStatic()))){ return (m_nullContact); }; if (_local3.m_body == _local4.m_body){ return (m_nullContact); }; if (_local6.IsConnected(_local5)){ return (m_nullContact); }; if (((!((m_world.m_contactFilter == null))) && ((m_world.m_contactFilter.ShouldCollide(_local3, _local4) == false)))){ return (m_nullContact); }; var _local7:b2Contact = b2Contact.Create(_local3, _local4, m_world.m_blockAllocator); if (_local7 == null){ return (m_nullContact); }; _local3 = _local7.m_shape1; _local4 = _local7.m_shape2; _local5 = _local3.m_body; _local6 = _local4.m_body; _local7.m_prev = null; _local7.m_next = m_world.m_contactList; if (m_world.m_contactList != null){ m_world.m_contactList.m_prev = _local7; }; m_world.m_contactList = _local7; _local7.m_node1.contact = _local7; _local7.m_node1.other = _local6; _local7.m_node1.prev = null; _local7.m_node1.next = _local5.m_contactList; if (_local5.m_contactList != null){ _local5.m_contactList.prev = _local7.m_node1; }; _local5.m_contactList = _local7.m_node1; _local7.m_node2.contact = _local7; _local7.m_node2.other = _local5; _local7.m_node2.prev = null; _local7.m_node2.next = _local6.m_contactList; if (_local6.m_contactList != null){ _local6.m_contactList.prev = _local7.m_node2; }; _local6.m_contactList = _local7.m_node2; m_world.m_contactCount++; return (_local7); } public function Collide():void{ var _local2:b2Body; var _local3:b2Body; var _local1:b2Contact = m_world.m_contactList; while (_local1) { _local2 = _local1.m_shape1.m_body; _local3 = _local1.m_shape2.m_body; if (((_local2.IsSleeping()) && (_local3.IsSleeping()))){ } else { _local1.Update(m_world.m_contactListener); }; _local1 = _local1.m_next; }; } } }//package Box2D.Dynamics
Section 117
//b2DebugDraw (Box2D.Dynamics.b2DebugDraw) package Box2D.Dynamics { import flash.display.*; import Box2D.Collision.*; import Box2D.Collision.Shapes.*; import Box2D.Common.Math.*; import Box2D.Common.*; import Box2D.Dynamics.Contacts.*; public class b2DebugDraw { public var m_xformScale:Number;// = 1 public var m_fillAlpha:Number;// = 1 public var m_alpha:Number;// = 1 public var m_drawFlags:uint; public var m_lineThickness:Number;// = 1 public var m_drawScale:Number;// = 1 public var m_sprite:Sprite; public static var e_coreShapeBit:uint = 4; public static var e_shapeBit:uint = 1; public static var e_centerOfMassBit:uint = 64; public static var e_aabbBit:uint = 8; public static var e_obbBit:uint = 16; public static var e_pairBit:uint = 32; public static var e_jointBit:uint = 2; public function b2DebugDraw(){ m_drawFlags = 0; } public function ClearFlags(_arg1:uint):void{ m_drawFlags = (m_drawFlags & ~(_arg1)); } public function SetFlags(_arg1:uint):void{ m_drawFlags = _arg1; } public function AppendFlags(_arg1:uint):void{ m_drawFlags = (m_drawFlags | _arg1); } public function DrawSegment(_arg1:b2Vec2, _arg2:b2Vec2, _arg3:b2Color):void{ m_sprite.graphics.lineStyle(m_lineThickness, _arg3.color, m_alpha); m_sprite.graphics.moveTo((_arg1.x * m_drawScale), (_arg1.y * m_drawScale)); m_sprite.graphics.lineTo((_arg2.x * m_drawScale), (_arg2.y * m_drawScale)); } public function DrawSolidPolygon(_arg1:Array, _arg2:int, _arg3:b2Color):void{ m_sprite.graphics.lineStyle(m_lineThickness, _arg3.color, m_alpha); m_sprite.graphics.moveTo((_arg1[0].x * m_drawScale), (_arg1[0].y * m_drawScale)); m_sprite.graphics.beginFill(_arg3.color, m_fillAlpha); var _local4 = 1; while (_local4 < _arg2) { m_sprite.graphics.lineTo((_arg1[_local4].x * m_drawScale), (_arg1[_local4].y * m_drawScale)); _local4++; }; m_sprite.graphics.lineTo((_arg1[0].x * m_drawScale), (_arg1[0].y * m_drawScale)); m_sprite.graphics.endFill(); } public function DrawCircle(_arg1:b2Vec2, _arg2:Number, _arg3:b2Color):void{ m_sprite.graphics.lineStyle(m_lineThickness, _arg3.color, m_alpha); m_sprite.graphics.drawCircle((_arg1.x * m_drawScale), (_arg1.y * m_drawScale), (_arg2 * m_drawScale)); } public function DrawPolygon(_arg1:Array, _arg2:int, _arg3:b2Color):void{ m_sprite.graphics.lineStyle(m_lineThickness, _arg3.color, m_alpha); m_sprite.graphics.moveTo((_arg1[0].x * m_drawScale), (_arg1[0].y * m_drawScale)); var _local4 = 1; while (_local4 < _arg2) { m_sprite.graphics.lineTo((_arg1[_local4].x * m_drawScale), (_arg1[_local4].y * m_drawScale)); _local4++; }; m_sprite.graphics.lineTo((_arg1[0].x * m_drawScale), (_arg1[0].y * m_drawScale)); } public function DrawSolidCircle(_arg1:b2Vec2, _arg2:Number, _arg3:b2Vec2, _arg4:b2Color):void{ m_sprite.graphics.lineStyle(m_lineThickness, _arg4.color, m_alpha); m_sprite.graphics.moveTo(0, 0); m_sprite.graphics.beginFill(_arg4.color, m_fillAlpha); m_sprite.graphics.drawCircle((_arg1.x * m_drawScale), (_arg1.y * m_drawScale), (_arg2 * m_drawScale)); m_sprite.graphics.endFill(); m_sprite.graphics.moveTo((_arg1.x * m_drawScale), (_arg1.y * m_drawScale)); m_sprite.graphics.lineTo(((_arg1.x + (_arg3.x * _arg2)) * m_drawScale), ((_arg1.y + (_arg3.y * _arg2)) * m_drawScale)); } public function GetFlags():uint{ return (m_drawFlags); } public function DrawXForm(_arg1:b2XForm):void{ m_sprite.graphics.lineStyle(m_lineThickness, 0xFF0000, m_alpha); m_sprite.graphics.moveTo((_arg1.position.x * m_drawScale), (_arg1.position.y * m_drawScale)); m_sprite.graphics.lineTo(((_arg1.position.x + (m_xformScale * _arg1.R.col1.x)) * m_drawScale), ((_arg1.position.y + (m_xformScale * _arg1.R.col1.y)) * m_drawScale)); m_sprite.graphics.lineStyle(m_lineThickness, 0xFF00, m_alpha); m_sprite.graphics.moveTo((_arg1.position.x * m_drawScale), (_arg1.position.y * m_drawScale)); m_sprite.graphics.lineTo(((_arg1.position.x + (m_xformScale * _arg1.R.col2.x)) * m_drawScale), ((_arg1.position.y + (m_xformScale * _arg1.R.col2.y)) * m_drawScale)); } } }//package Box2D.Dynamics
Section 118
//b2DestructionListener (Box2D.Dynamics.b2DestructionListener) package Box2D.Dynamics { import Box2D.Collision.Shapes.*; import Box2D.Dynamics.Joints.*; public class b2DestructionListener { public function SayGoodbyeShape(_arg1:b2Shape):void{ } public function SayGoodbyeJoint(_arg1:b2Joint):void{ } } }//package Box2D.Dynamics
Section 119
//b2Island (Box2D.Dynamics.b2Island) package Box2D.Dynamics { import Box2D.Collision.*; import Box2D.Common.Math.*; import Box2D.Dynamics.Joints.*; import Box2D.Common.*; import Box2D.Dynamics.Contacts.*; public class b2Island { public var m_listener:b2ContactListener; public var m_positionIterationCount:int; public var m_bodyCapacity:int; public var m_bodies:Array; public var m_joints:Array; public var m_jointCapacity:int; public var m_contactCount:int; public var m_contacts:Array; public var m_contactCapacity:int; public var m_jointCount:int; public var m_allocator; public var m_bodyCount:int; private static var s_reportCR:b2ContactResult = new b2ContactResult(); public function b2Island(_arg1:int, _arg2:int, _arg3:int, _arg4, _arg5:b2ContactListener){ var _local6:int; super(); m_bodyCapacity = _arg1; m_contactCapacity = _arg2; m_jointCapacity = _arg3; m_bodyCount = 0; m_contactCount = 0; m_jointCount = 0; m_allocator = _arg4; m_listener = _arg5; m_bodies = new Array(_arg1); _local6 = 0; while (_local6 < _arg1) { m_bodies[_local6] = null; _local6++; }; m_contacts = new Array(_arg2); _local6 = 0; while (_local6 < _arg2) { m_contacts[_local6] = null; _local6++; }; m_joints = new Array(_arg3); _local6 = 0; while (_local6 < _arg3) { m_joints[_local6] = null; _local6++; }; m_positionIterationCount = 0; } public function AddBody(_arg1:b2Body):void{ var _local2 = m_bodyCount++; m_bodies[_local2] = _arg1; } public function AddJoint(_arg1:b2Joint):void{ var _local2 = m_jointCount++; m_joints[_local2] = _arg1; } public function Report(_arg1:Array):void{ var _local2:b2Mat22; var _local3:b2Vec2; var _local5:b2Contact; var _local6:b2ContactConstraint; var _local7:b2ContactResult; var _local8:b2Body; var _local9:int; var _local10:Array; var _local11:int; var _local12:b2Manifold; var _local13:int; var _local14:b2ManifoldPoint; var _local15:b2ContactConstraintPoint; if (m_listener == null){ return; }; var _local4:int; while (_local4 < m_contactCount) { _local5 = m_contacts[_local4]; _local6 = _arg1[_local4]; _local7 = s_reportCR; _local7.shape1 = _local5.m_shape1; _local7.shape2 = _local5.m_shape2; _local8 = _local7.shape1.m_body; _local9 = _local5.m_manifoldCount; _local10 = _local5.GetManifolds(); _local11 = 0; while (_local11 < _local9) { _local12 = _local10[_local11]; _local7.normal.SetV(_local12.normal); _local13 = 0; while (_local13 < _local12.pointCount) { _local14 = _local12.points[_local13]; _local15 = _local6.points[_local13]; _local7.position = _local8.GetWorldPoint(_local14.localPoint1); _local7.normalImpulse = _local15.normalImpulse; _local7.tangentImpulse = _local15.tangentImpulse; _local7.id.key = _local14.id.key; m_listener.Result(_local7); _local13++; }; _local11++; }; _local4++; }; } public function AddContact(_arg1:b2Contact):void{ var _local2 = m_contactCount++; m_contacts[_local2] = _arg1; } public function Solve(_arg1:b2TimeStep, _arg2:b2Vec2, _arg3:Boolean, _arg4:Boolean):void{ var _local5:int; var _local6:b2Body; var _local7:b2Joint; var _local9:int; var _local10:Boolean; var _local11:Boolean; var _local12:Boolean; var _local13:Number; var _local14:Number; var _local15:Number; _local5 = 0; while (_local5 < m_bodyCount) { _local6 = m_bodies[_local5]; if (_local6.IsStatic()){ } else { _local6.m_linearVelocity.x = (_local6.m_linearVelocity.x + (_arg1.dt * (_arg2.x + (_local6.m_invMass * _local6.m_force.x)))); _local6.m_linearVelocity.y = (_local6.m_linearVelocity.y + (_arg1.dt * (_arg2.y + (_local6.m_invMass * _local6.m_force.y)))); _local6.m_angularVelocity = (_local6.m_angularVelocity + ((_arg1.dt * _local6.m_invI) * _local6.m_torque)); _local6.m_force.SetZero(); _local6.m_torque = 0; _local6.m_linearVelocity.Multiply(b2Math.b2Clamp((1 - (_arg1.dt * _local6.m_linearDamping)), 0, 1)); _local6.m_angularVelocity = (_local6.m_angularVelocity * b2Math.b2Clamp((1 - (_arg1.dt * _local6.m_angularDamping)), 0, 1)); if (_local6.m_linearVelocity.LengthSquared() > b2Settings.b2_maxLinearVelocitySquared){ _local6.m_linearVelocity.Normalize(); _local6.m_linearVelocity.x = (_local6.m_linearVelocity.x * b2Settings.b2_maxLinearVelocity); _local6.m_linearVelocity.y = (_local6.m_linearVelocity.y * b2Settings.b2_maxLinearVelocity); }; if ((_local6.m_angularVelocity * _local6.m_angularVelocity) > b2Settings.b2_maxAngularVelocitySquared){ if (_local6.m_angularVelocity < 0){ _local6.m_angularVelocity = -(b2Settings.b2_maxAngularVelocity); } else { _local6.m_angularVelocity = b2Settings.b2_maxAngularVelocity; }; }; }; _local5++; }; var _local8:b2ContactSolver = new b2ContactSolver(_arg1, m_contacts, m_contactCount, m_allocator); _local8.InitVelocityConstraints(_arg1); _local5 = 0; while (_local5 < m_jointCount) { _local7 = m_joints[_local5]; _local7.InitVelocityConstraints(_arg1); _local5++; }; _local5 = 0; while (_local5 < _arg1.maxIterations) { _local8.SolveVelocityConstraints(); _local9 = 0; while (_local9 < m_jointCount) { _local7 = m_joints[_local9]; _local7.SolveVelocityConstraints(_arg1); _local9++; }; _local5++; }; _local8.FinalizeVelocityConstraints(); _local5 = 0; while (_local5 < m_bodyCount) { _local6 = m_bodies[_local5]; if (_local6.IsStatic()){ } else { _local6.m_sweep.c0.SetV(_local6.m_sweep.c); _local6.m_sweep.a0 = _local6.m_sweep.a; _local6.m_sweep.c.x = (_local6.m_sweep.c.x + (_arg1.dt * _local6.m_linearVelocity.x)); _local6.m_sweep.c.y = (_local6.m_sweep.c.y + (_arg1.dt * _local6.m_linearVelocity.y)); _local6.m_sweep.a = (_local6.m_sweep.a + (_arg1.dt * _local6.m_angularVelocity)); _local6.SynchronizeTransform(); }; _local5++; }; if (_arg3){ _local5 = 0; while (_local5 < m_jointCount) { _local7 = m_joints[_local5]; _local7.InitPositionConstraints(); _local5++; }; m_positionIterationCount = 0; while (m_positionIterationCount < _arg1.maxIterations) { _local10 = _local8.SolvePositionConstraints(b2Settings.b2_contactBaumgarte); _local11 = true; _local5 = 0; while (_local5 < m_jointCount) { _local7 = m_joints[_local5]; _local12 = _local7.SolvePositionConstraints(); _local11 = ((_local11) && (_local12)); _local5++; }; if (((_local10) && (_local11))){ break; }; m_positionIterationCount++; }; }; Report(_local8.m_constraints); if (_arg4){ _local13 = Number.MAX_VALUE; _local14 = (b2Settings.b2_linearSleepTolerance * b2Settings.b2_linearSleepTolerance); _local15 = (b2Settings.b2_angularSleepTolerance * b2Settings.b2_angularSleepTolerance); _local5 = 0; while (_local5 < m_bodyCount) { _local6 = m_bodies[_local5]; if (_local6.m_invMass == 0){ } else { if ((_local6.m_flags & b2Body.e_allowSleepFlag) == 0){ _local6.m_sleepTime = 0; _local13 = 0; }; if (((((((_local6.m_flags & b2Body.e_allowSleepFlag) == 0)) || (((_local6.m_angularVelocity * _local6.m_angularVelocity) > _local15)))) || ((b2Math.b2Dot(_local6.m_linearVelocity, _local6.m_linearVelocity) > _local14)))){ _local6.m_sleepTime = 0; _local13 = 0; } else { _local6.m_sleepTime = (_local6.m_sleepTime + _arg1.dt); _local13 = b2Math.b2Min(_local13, _local6.m_sleepTime); }; }; _local5++; }; if (_local13 >= b2Settings.b2_timeToSleep){ _local5 = 0; while (_local5 < m_bodyCount) { _local6 = m_bodies[_local5]; m_bodies[_local5].m_flags = (_local6.m_flags | b2Body.e_sleepFlag); _local6.m_linearVelocity.SetZero(); _local6.m_angularVelocity = 0; _local5++; }; }; }; } public function Clear():void{ m_bodyCount = 0; m_contactCount = 0; m_jointCount = 0; } public function SolveTOI(_arg1:b2TimeStep):void{ var _local2:int; var _local5:b2Body; var _local6:Boolean; var _local3:b2ContactSolver = new b2ContactSolver(_arg1, m_contacts, m_contactCount, m_allocator); _local2 = 0; while (_local2 < _arg1.maxIterations) { _local3.SolveVelocityConstraints(); _local2++; }; _local2 = 0; while (_local2 < m_bodyCount) { _local5 = m_bodies[_local2]; if (_local5.IsStatic()){ } else { _local5.m_sweep.c0.SetV(_local5.m_sweep.c); _local5.m_sweep.a0 = _local5.m_sweep.a; _local5.m_sweep.c.x = (_local5.m_sweep.c.x + (_arg1.dt * _local5.m_linearVelocity.x)); _local5.m_sweep.c.y = (_local5.m_sweep.c.y + (_arg1.dt * _local5.m_linearVelocity.y)); _local5.m_sweep.a = (_local5.m_sweep.a + (_arg1.dt * _local5.m_angularVelocity)); _local5.SynchronizeTransform(); }; _local2++; }; var _local4:Number = 0.75; _local2 = 0; while (_local2 < _arg1.maxIterations) { _local6 = _local3.SolvePositionConstraints(_local4); if (_local6){ break; }; _local2++; }; Report(_local3.m_constraints); } } }//package Box2D.Dynamics
Section 120
//b2TimeStep (Box2D.Dynamics.b2TimeStep) package Box2D.Dynamics { public class b2TimeStep { public var warmStarting:Boolean; public var positionCorrection:Boolean; public var dt:Number; public var maxIterations:int; public var dtRatio:Number; public var inv_dt:Number; } }//package Box2D.Dynamics
Section 121
//b2World (Box2D.Dynamics.b2World) package Box2D.Dynamics { import flash.events.*; import Box2D.Collision.*; import Box2D.Collision.Shapes.*; import Box2D.Common.Math.*; import Box2D.Dynamics.Joints.*; import Box2D.Common.*; import Box2D.Dynamics.Contacts.*; public class b2World { public var m_inv_dt0:Number; public var m_boundaryListener:b2BoundaryListener; public var m_contactList:b2Contact; public var m_blockAllocator; public var m_contactListener:b2ContactListener; public var m_allowSleep:Boolean; public var m_broadPhase:b2BroadPhase; public var m_destructionListener:b2DestructionListener; public var m_jointCount:int; public var m_bodyCount:int; public var m_lock:Boolean; public var m_positionIterationCount:int; public var m_groundBody:b2Body; public var m_contactCount:int; public var m_debugDraw:b2DebugDraw; public var m_contactFilter:b2ContactFilter; public var m_bodyList:b2Body; public var m_stackAllocator; public var m_jointList:b2Joint; public var m_gravity:b2Vec2; public var m_contactManager:b2ContactManager; private static var s_jointColor:b2Color = new b2Color(0.5, 0.8, 0.8); public static var m_continuousPhysics:Boolean; public static var m_warmStarting:Boolean; private static var s_coreColor:b2Color = new b2Color(0.9, 0.6, 0.6); public static var m_positionCorrection:Boolean; private static var s_xf:b2XForm = new b2XForm(); public function b2World(_arg1:b2AABB, _arg2:b2Vec2, _arg3:Boolean){ m_contactManager = new b2ContactManager(); super(); m_destructionListener = null; m_boundaryListener = null; m_contactFilter = b2ContactFilter.b2_defaultFilter; m_contactListener = null; m_debugDraw = null; m_bodyList = null; m_contactList = null; m_jointList = null; m_bodyCount = 0; m_contactCount = 0; m_jointCount = 0; m_positionCorrection = true; m_warmStarting = true; m_continuousPhysics = true; m_allowSleep = _arg3; m_gravity = _arg2; m_lock = false; m_inv_dt0 = 0; m_contactManager.m_world = this; m_broadPhase = new b2BroadPhase(_arg1, m_contactManager); var _local4:b2BodyDef = new b2BodyDef(); m_groundBody = CreateBody(_local4); } public function DrawJoint(_arg1:b2Joint):void{ var _local11:b2PulleyJoint; var _local12:b2Vec2; var _local13:b2Vec2; var _local2:b2Body = _arg1.m_body1; var _local3:b2Body = _arg1.m_body2; var _local4:b2XForm = _local2.m_xf; var _local5:b2XForm = _local3.m_xf; var _local6:b2Vec2 = _local4.position; var _local7:b2Vec2 = _local5.position; var _local8:b2Vec2 = _arg1.GetAnchor1(); var _local9:b2Vec2 = _arg1.GetAnchor2(); var _local10:b2Color = s_jointColor; switch (_arg1.m_type){ case b2Joint.e_distanceJoint: m_debugDraw.DrawSegment(_local8, _local9, _local10); break; case b2Joint.e_pulleyJoint: _local11 = (_arg1 as b2PulleyJoint); _local12 = _local11.GetGroundAnchor1(); _local13 = _local11.GetGroundAnchor2(); m_debugDraw.DrawSegment(_local12, _local8, _local10); m_debugDraw.DrawSegment(_local13, _local9, _local10); m_debugDraw.DrawSegment(_local12, _local13, _local10); break; case b2Joint.e_mouseJoint: m_debugDraw.DrawSegment(_local8, _local9, _local10); break; default: if (_local2 != m_groundBody){ m_debugDraw.DrawSegment(_local6, _local8, _local10); }; m_debugDraw.DrawSegment(_local8, _local9, _local10); if (_local3 != m_groundBody){ m_debugDraw.DrawSegment(_local7, _local9, _local10); }; }; } public function Refilter(_arg1:b2Shape):void{ _arg1.RefilterProxy(m_broadPhase, _arg1.m_body.m_xf); } public function SetDebugDraw(_arg1:b2DebugDraw):void{ m_debugDraw = _arg1; } public function SetContinuousPhysics(_arg1:Boolean):void{ m_continuousPhysics = _arg1; } public function GetProxyCount():int{ return (m_broadPhase.m_proxyCount); } public function DrawDebugData():void{ var _local2:int; var _local3:b2Body; var _local4:b2Shape; var _local5:b2Joint; var _local6:b2BroadPhase; var _local11:b2XForm; var _local15:Boolean; var _local16:uint; var _local17:b2Pair; var _local18:b2Proxy; var _local19:b2Proxy; var _local20:b2Vec2; var _local21:b2Vec2; var _local22:b2Proxy; var _local23:b2PolygonShape; var _local24:b2OBB; var _local25:b2Vec2; var _local26:b2Mat22; var _local27:b2Vec2; var _local28:Number; if (m_debugDraw == null){ return; }; m_debugDraw.m_sprite.graphics.clear(); var _local1:uint = m_debugDraw.GetFlags(); var _local7:b2Vec2 = new b2Vec2(); var _local8:b2Vec2 = new b2Vec2(); var _local9:b2Vec2 = new b2Vec2(); var _local10:b2Color = new b2Color(0, 0, 0); var _local12:b2AABB = new b2AABB(); var _local13:b2AABB = new b2AABB(); var _local14:Array = [new b2Vec2(), new b2Vec2(), new b2Vec2(), new b2Vec2()]; if ((_local1 & b2DebugDraw.e_shapeBit)){ _local15 = ((_local1 & b2DebugDraw.e_coreShapeBit) == b2DebugDraw.e_coreShapeBit); _local3 = m_bodyList; while (_local3) { _local11 = _local3.m_xf; _local4 = _local3.GetShapeList(); while (_local4) { if (_local3.IsStatic()){ DrawShape(_local4, _local11, new b2Color(0.5, 0.9, 0.5), _local15); } else { if (_local3.IsSleeping()){ DrawShape(_local4, _local11, new b2Color(0.5, 0.5, 0.9), _local15); } else { DrawShape(_local4, _local11, new b2Color(0.9, 0.9, 0.9), _local15); }; }; _local4 = _local4.m_next; }; _local3 = _local3.m_next; }; }; if ((_local1 & b2DebugDraw.e_jointBit)){ _local5 = m_jointList; while (_local5) { DrawJoint(_local5); _local5 = _local5.m_next; }; }; if ((_local1 & b2DebugDraw.e_pairBit)){ _local6 = m_broadPhase; _local7.Set((1 / _local6.m_quantizationFactor.x), (1 / _local6.m_quantizationFactor.y)); _local10.Set(0.9, 0.9, 0.3); _local2 = 0; while (_local2 < b2Pair.b2_tableCapacity) { _local16 = _local6.m_pairManager.m_hashTable[_local2]; while (_local16 != b2Pair.b2_nullPair) { _local17 = _local6.m_pairManager.m_pairs[_local16]; _local18 = _local6.m_proxyPool[_local17.proxyId1]; _local19 = _local6.m_proxyPool[_local17.proxyId2]; _local12.lowerBound.x = (_local6.m_worldAABB.lowerBound.x + (_local7.x * _local6.m_bounds[0][_local18.lowerBounds[0]].value)); _local12.lowerBound.y = (_local6.m_worldAABB.lowerBound.y + (_local7.y * _local6.m_bounds[1][_local18.lowerBounds[1]].value)); _local12.upperBound.x = (_local6.m_worldAABB.lowerBound.x + (_local7.x * _local6.m_bounds[0][_local18.upperBounds[0]].value)); _local12.upperBound.y = (_local6.m_worldAABB.lowerBound.y + (_local7.y * _local6.m_bounds[1][_local18.upperBounds[1]].value)); _local13.lowerBound.x = (_local6.m_worldAABB.lowerBound.x + (_local7.x * _local6.m_bounds[0][_local19.lowerBounds[0]].value)); _local13.lowerBound.y = (_local6.m_worldAABB.lowerBound.y + (_local7.y * _local6.m_bounds[1][_local19.lowerBounds[1]].value)); _local13.upperBound.x = (_local6.m_worldAABB.lowerBound.x + (_local7.x * _local6.m_bounds[0][_local19.upperBounds[0]].value)); _local13.upperBound.y = (_local6.m_worldAABB.lowerBound.y + (_local7.y * _local6.m_bounds[1][_local19.upperBounds[1]].value)); _local8.x = (0.5 * (_local12.lowerBound.x + _local12.upperBound.x)); _local8.y = (0.5 * (_local12.lowerBound.y + _local12.upperBound.y)); _local9.x = (0.5 * (_local13.lowerBound.x + _local13.upperBound.x)); _local9.y = (0.5 * (_local13.lowerBound.y + _local13.upperBound.y)); m_debugDraw.DrawSegment(_local8, _local9, _local10); _local16 = _local17.next; }; _local2++; }; }; if ((_local1 & b2DebugDraw.e_aabbBit)){ _local6 = m_broadPhase; _local20 = _local6.m_worldAABB.lowerBound; _local21 = _local6.m_worldAABB.upperBound; _local7.Set((1 / _local6.m_quantizationFactor.x), (1 / _local6.m_quantizationFactor.y)); _local10.Set(0.9, 0.3, 0.9); _local2 = 0; while (_local2 < b2Settings.b2_maxProxies) { _local22 = _local6.m_proxyPool[_local2]; if (_local22.IsValid() == false){ } else { _local12.lowerBound.x = (_local20.x + (_local7.x * _local6.m_bounds[0][_local22.lowerBounds[0]].value)); _local12.lowerBound.y = (_local20.y + (_local7.y * _local6.m_bounds[1][_local22.lowerBounds[1]].value)); _local12.upperBound.x = (_local20.x + (_local7.x * _local6.m_bounds[0][_local22.upperBounds[0]].value)); _local12.upperBound.y = (_local20.y + (_local7.y * _local6.m_bounds[1][_local22.upperBounds[1]].value)); _local14[0].Set(_local12.lowerBound.x, _local12.lowerBound.y); _local14[1].Set(_local12.upperBound.x, _local12.lowerBound.y); _local14[2].Set(_local12.upperBound.x, _local12.upperBound.y); _local14[3].Set(_local12.lowerBound.x, _local12.upperBound.y); m_debugDraw.DrawPolygon(_local14, 4, _local10); }; _local2++; }; _local14[0].Set(_local20.x, _local20.y); _local14[1].Set(_local21.x, _local20.y); _local14[2].Set(_local21.x, _local21.y); _local14[3].Set(_local20.x, _local21.y); m_debugDraw.DrawPolygon(_local14, 4, new b2Color(0.3, 0.9, 0.9)); }; if ((_local1 & b2DebugDraw.e_obbBit)){ _local10.Set(0.5, 0.3, 0.5); _local3 = m_bodyList; while (_local3) { _local11 = _local3.m_xf; _local4 = _local3.GetShapeList(); while (_local4) { if (_local4.m_type != b2Shape.e_polygonShape){ } else { _local23 = (_local4 as b2PolygonShape); _local24 = _local23.GetOBB(); _local25 = _local24.extents; _local14[0].Set(-(_local25.x), -(_local25.y)); _local14[1].Set(_local25.x, -(_local25.y)); _local14[2].Set(_local25.x, _local25.y); _local14[3].Set(-(_local25.x), _local25.y); _local2 = 0; while (_local2 < 4) { _local26 = _local24.R; _local27 = _local14[_local2]; _local28 = (_local24.center.x + ((_local26.col1.x * _local27.x) + (_local26.col2.x * _local27.y))); _local14[_local2].y = (_local24.center.y + ((_local26.col1.y * _local27.x) + (_local26.col2.y * _local27.y))); _local14[_local2].x = _local28; _local26 = _local11.R; _local28 = (_local11.position.x + ((_local26.col1.x * _local27.x) + (_local26.col2.x * _local27.y))); _local14[_local2].y = (_local11.position.y + ((_local26.col1.y * _local27.x) + (_local26.col2.y * _local27.y))); _local14[_local2].x = _local28; _local2++; }; m_debugDraw.DrawPolygon(_local14, 4, _local10); }; _local4 = _local4.m_next; }; _local3 = _local3.m_next; }; }; if ((_local1 & b2DebugDraw.e_centerOfMassBit)){ _local3 = m_bodyList; while (_local3) { _local11 = s_xf; _local11.R = _local3.m_xf.R; _local11.position = _local3.GetWorldCenter(); m_debugDraw.DrawXForm(_local11); _local3 = _local3.m_next; }; }; } public function DestroyBody(_arg1:b2Body):void{ var _local4:b2JointEdge; var _local5:b2Shape; if (m_lock == true){ return; }; var _local2:b2JointEdge = _arg1.m_jointList; while (_local2) { _local4 = _local2; _local2 = _local2.next; if (m_destructionListener){ m_destructionListener.SayGoodbyeJoint(_local4.joint); }; DestroyJoint(_local4.joint); }; var _local3:b2Shape = _arg1.m_shapeList; while (_local3) { _local5 = _local3; _local3 = _local3.m_next; if (m_destructionListener){ m_destructionListener.SayGoodbyeShape(_local5); }; _local5.DestroyProxy(m_broadPhase); b2Shape.Destroy(_local5, m_blockAllocator); }; if (_arg1.m_prev){ _arg1.m_prev.m_next = _arg1.m_next; }; if (_arg1.m_next){ _arg1.m_next.m_prev = _arg1.m_prev; }; if (_arg1 == m_bodyList){ m_bodyList = _arg1.m_next; }; m_bodyCount--; } public function SetContactFilter(_arg1:b2ContactFilter):void{ m_contactFilter = _arg1; } public function GetGroundBody():b2Body{ return (m_groundBody); } public function DrawShape(_arg1:b2Shape, _arg2:b2XForm, _arg3:b2Color, _arg4:Boolean):void{ var _local6:b2CircleShape; var _local7:b2Vec2; var _local8:Number; var _local9:b2Vec2; var _local10:int; var _local11:b2PolygonShape; var _local12:int; var _local13:Array; var _local14:Array; var _local15:Array; var _local5:b2Color = s_coreColor; switch (_arg1.m_type){ case b2Shape.e_circleShape: _local6 = (_arg1 as b2CircleShape); _local7 = b2Math.b2MulX(_arg2, _local6.m_localPosition); _local8 = _local6.m_radius; _local9 = _arg2.R.col1; m_debugDraw.DrawSolidCircle(_local7, _local8, _local9, _arg3); if (_arg4){ m_debugDraw.DrawCircle(_local7, (_local8 - b2Settings.b2_toiSlop), _local5); }; break; case b2Shape.e_polygonShape: _local11 = (_arg1 as b2PolygonShape); _local12 = _local11.GetVertexCount(); _local13 = _local11.GetVertices(); _local14 = new Array(b2Settings.b2_maxPolygonVertices); _local10 = 0; while (_local10 < _local12) { _local14[_local10] = b2Math.b2MulX(_arg2, _local13[_local10]); _local10++; }; m_debugDraw.DrawSolidPolygon(_local14, _local12, _arg3); if (_arg4){ _local15 = _local11.GetCoreVertices(); _local10 = 0; while (_local10 < _local12) { _local14[_local10] = b2Math.b2MulX(_arg2, _local15[_local10]); _local10++; }; m_debugDraw.DrawPolygon(_local14, _local12, _local5); }; break; }; } public function GetContactCount():int{ return (m_contactCount); } public function Solve(_arg1:b2TimeStep):void{ var _local2:b2Body; var _local9:int; var _local10:int; var _local11:b2Body; var _local12:b2ContactEdge; var _local13:b2JointEdge; var _local14:Boolean; m_positionIterationCount = 0; var _local3:b2Island = new b2Island(m_bodyCount, m_contactCount, m_jointCount, m_stackAllocator, m_contactListener); _local2 = m_bodyList; while (_local2) { _local2.m_flags = (_local2.m_flags & ~(b2Body.e_islandFlag)); _local2 = _local2.m_next; }; var _local4:b2Contact = m_contactList; while (_local4) { _local4.m_flags = (_local4.m_flags & ~(b2Contact.e_islandFlag)); _local4 = _local4.m_next; }; var _local5:b2Joint = m_jointList; while (_local5) { _local5.m_islandFlag = false; _local5 = _local5.m_next; }; var _local6:int = m_bodyCount; var _local7:Array = new Array(_local6); var _local8:b2Body = m_bodyList; while (_local8) { if ((_local8.m_flags & ((b2Body.e_islandFlag | b2Body.e_sleepFlag) | b2Body.e_frozenFlag))){ } else { if (_local8.IsStatic()){ } else { _local3.Clear(); _local9 = 0; var _temp1 = _local9; _local9 = (_local9 + 1); var _local15 = _temp1; _local7[_local15] = _local8; _local8.m_flags = (_local8.m_flags | b2Body.e_islandFlag); while (_local9 > 0) { --_local9; _local2 = _local7[_local9]; _local3.AddBody(_local2); _local2.m_flags = (_local2.m_flags & ~(b2Body.e_sleepFlag)); _local2.dispatchEvent(new Event("wakeup")); if (_local2.IsStatic()){ } else { _local12 = _local2.m_contactList; while (_local12) { if ((_local12.contact.m_flags & (b2Contact.e_islandFlag | b2Contact.e_nonSolidFlag))){ } else { if (_local12.contact.m_manifoldCount == 0){ } else { _local3.AddContact(_local12.contact); _local12.contact.m_flags = (_local12.contact.m_flags | b2Contact.e_islandFlag); _local11 = _local12.other; if ((_local11.m_flags & b2Body.e_islandFlag)){ } else { var _temp2 = _local9; _local9 = (_local9 + 1); var _local16 = _temp2; _local7[_local16] = _local11; _local11.m_flags = (_local11.m_flags | b2Body.e_islandFlag); }; }; }; _local12 = _local12.next; }; _local13 = _local2.m_jointList; while (_local13) { if (_local13.joint.m_islandFlag == true){ } else { _local3.AddJoint(_local13.joint); _local13.joint.m_islandFlag = true; _local11 = _local13.other; if ((_local11.m_flags & b2Body.e_islandFlag)){ } else { var _temp3 = _local9; _local9 = (_local9 + 1); _local16 = _temp3; _local7[_local16] = _local11; _local11.m_flags = (_local11.m_flags | b2Body.e_islandFlag); }; }; _local13 = _local13.next; }; }; }; _local3.Solve(_arg1, m_gravity, m_positionCorrection, m_allowSleep); if (_local3.m_positionIterationCount > m_positionIterationCount){ m_positionIterationCount = _local3.m_positionIterationCount; }; _local10 = 0; while (_local10 < _local3.m_bodyCount) { _local2 = _local3.m_bodies[_local10]; if (_local2.IsStatic()){ _local2.m_flags = (_local2.m_flags & ~(b2Body.e_islandFlag)); }; _local10++; }; }; }; _local8 = _local8.m_next; }; _local2 = m_bodyList; while (_local2) { if ((_local2.m_flags & (b2Body.e_sleepFlag | b2Body.e_frozenFlag))){ } else { if (_local2.IsStatic()){ } else { _local14 = _local2.SynchronizeShapes(); if ((((_local14 == false)) && (!((m_boundaryListener == null))))){ m_boundaryListener.Violation(_local2); }; }; }; _local2 = _local2.m_next; }; m_broadPhase.Commit(); } public function Query(_arg1:b2AABB, _arg2:Array, _arg3:int):int{ var _local4:Array = new Array(_arg3); var _local5:int = m_broadPhase.QueryAABB(_arg1, _local4, _arg3); var _local6:int; while (_local6 < _local5) { _arg2[_local6] = _local4[_local6]; _local6++; }; return (_local5); } public function SetGravity(_arg1:b2Vec2):void{ m_gravity = _arg1; } public function SolveTOI(_arg1:b2TimeStep):void{ var _local2:b2Body; var _local3:b2Shape; var _local4:b2Shape; var _local5:b2Body; var _local6:b2Body; var _local7:b2ContactEdge; var _local11:b2Contact; var _local12:b2Contact; var _local13:Number; var _local14:b2Body; var _local15:int; var _local16:b2TimeStep; var _local17:int; var _local18:Number; var _local19:Number; var _local20:b2Body; var _local21:Boolean; var _local8:b2Island = new b2Island(m_bodyCount, b2Settings.b2_maxTOIContactsPerIsland, 0, m_stackAllocator, m_contactListener); var _local9:int = m_bodyCount; var _local10:Array = new Array(_local9); _local2 = m_bodyList; while (_local2) { _local2.m_flags = (_local2.m_flags & ~(b2Body.e_islandFlag)); _local2.m_sweep.t0 = 0; _local2 = _local2.m_next; }; _local11 = m_contactList; while (_local11) { _local11.m_flags = (_local11.m_flags & ~((b2Contact.e_toiFlag | b2Contact.e_islandFlag))); _local11 = _local11.m_next; }; while (true) { _local12 = null; _local13 = 1; _local11 = m_contactList; for (;_local11;(_local11 = _local11.m_next)) { if ((_local11.m_flags & (b2Contact.e_slowFlag | b2Contact.e_nonSolidFlag))){ } else { _local18 = 1; if ((_local11.m_flags & b2Contact.e_toiFlag)){ _local18 = _local11.m_toi; } else { _local3 = _local11.m_shape1; _local4 = _local11.m_shape2; _local5 = _local3.m_body; _local6 = _local4.m_body; if (((((_local5.IsStatic()) || (_local5.IsSleeping()))) && (((_local6.IsStatic()) || (_local6.IsSleeping()))))){ continue; }; _local19 = _local5.m_sweep.t0; if (_local5.m_sweep.t0 < _local6.m_sweep.t0){ _local19 = _local6.m_sweep.t0; _local5.m_sweep.Advance(_local19); } else { if (_local6.m_sweep.t0 < _local5.m_sweep.t0){ _local19 = _local5.m_sweep.t0; _local6.m_sweep.Advance(_local19); }; }; _local18 = b2TimeOfImpact.TimeOfImpact(_local11.m_shape1, _local5.m_sweep, _local11.m_shape2, _local6.m_sweep); if ((((_local18 > 0)) && ((_local18 < 1)))){ _local18 = (((1 - _local18) * _local19) + _local18); if (_local18 > 1){ _local18 = 1; }; }; _local11.m_toi = _local18; _local11.m_flags = (_local11.m_flags | b2Contact.e_toiFlag); }; if ((((Number.MIN_VALUE < _local18)) && ((_local18 < _local13)))){ _local12 = _local11; _local13 = _local18; }; }; }; if ((((_local12 == null)) || (((1 - (100 * Number.MIN_VALUE)) < _local13)))){ break; }; _local3 = _local12.m_shape1; _local4 = _local12.m_shape2; _local5 = _local3.m_body; _local6 = _local4.m_body; _local5.Advance(_local13); _local6.Advance(_local13); _local12.Update(m_contactListener); _local12.m_flags = (_local12.m_flags & ~(b2Contact.e_toiFlag)); if (_local12.m_manifoldCount == 0){ } else { _local14 = _local5; if (_local14.IsStatic()){ _local14 = _local6; }; _local8.Clear(); _local15 = 0; var _temp1 = _local15; _local15 = (_local15 + 1); var _local22 = _temp1; _local10[_local22] = _local14; _local14.m_flags = (_local14.m_flags | b2Body.e_islandFlag); while (_local15 > 0) { --_local15; _local2 = _local10[_local15]; _local8.AddBody(_local2); _local2.m_flags = (_local2.m_flags & ~(b2Body.e_sleepFlag)); _local2.dispatchEvent(new Event("wakeup")); if (_local2.IsStatic()){ } else { _local7 = _local2.m_contactList; while (_local7) { if (_local8.m_contactCount == _local8.m_contactCapacity){ } else { if ((_local7.contact.m_flags & ((b2Contact.e_islandFlag | b2Contact.e_slowFlag) | b2Contact.e_nonSolidFlag))){ } else { if (_local7.contact.m_manifoldCount == 0){ } else { _local8.AddContact(_local7.contact); _local7.contact.m_flags = (_local7.contact.m_flags | b2Contact.e_islandFlag); _local20 = _local7.other; if ((_local20.m_flags & b2Body.e_islandFlag)){ } else { if (_local20.IsStatic() == false){ _local20.Advance(_local13); _local20.WakeUp(); }; var _temp2 = _local15; _local15 = (_local15 + 1); var _local23 = _temp2; _local10[_local23] = _local20; _local20.m_flags = (_local20.m_flags | b2Body.e_islandFlag); }; }; }; }; _local7 = _local7.next; }; }; }; _local16 = new b2TimeStep(); _local16.dt = ((1 - _local13) * _arg1.dt); _local16.inv_dt = (1 / _local16.dt); _local16.maxIterations = _arg1.maxIterations; _local8.SolveTOI(_local16); _local17 = 0; while (_local17 < _local8.m_bodyCount) { _local2 = _local8.m_bodies[_local17]; _local2.m_flags = (_local2.m_flags & ~(b2Body.e_islandFlag)); if ((_local2.m_flags & (b2Body.e_sleepFlag | b2Body.e_frozenFlag))){ } else { if (_local2.IsStatic()){ } else { _local21 = _local2.SynchronizeShapes(); if ((((_local21 == false)) && (!((m_boundaryListener == null))))){ m_boundaryListener.Violation(_local2); }; _local7 = _local2.m_contactList; while (_local7) { _local7.contact.m_flags = (_local7.contact.m_flags & ~(b2Contact.e_toiFlag)); _local7 = _local7.next; }; }; }; _local17++; }; _local17 = 0; while (_local17 < _local8.m_contactCount) { _local11 = _local8.m_contacts[_local17]; _local8.m_contacts[_local17].m_flags = (_local11.m_flags & ~((b2Contact.e_toiFlag | b2Contact.e_islandFlag))); _local17++; }; m_broadPhase.Commit(); }; }; } public function GetJointList():b2Joint{ return (m_jointList); } public function GetBodyList():b2Body{ return (m_bodyList); } public function GetPairCount():int{ return (m_broadPhase.m_pairManager.m_pairCount); } public function Validate():void{ m_broadPhase.Validate(); } public function SetWarmStarting(_arg1:Boolean):void{ m_warmStarting = _arg1; } public function SetPositionCorrection(_arg1:Boolean):void{ m_positionCorrection = _arg1; } public function CreateJoint(_arg1:b2JointDef):b2Joint{ var _local3:b2Body; var _local4:b2Shape; var _local2:b2Joint = b2Joint.Create(_arg1, m_blockAllocator); _local2.m_prev = null; _local2.m_next = m_jointList; if (m_jointList){ m_jointList.m_prev = _local2; }; m_jointList = _local2; m_jointCount++; _local2.m_node1.joint = _local2; _local2.m_node1.other = _local2.m_body2; _local2.m_node1.prev = null; _local2.m_node1.next = _local2.m_body1.m_jointList; if (_local2.m_body1.m_jointList){ _local2.m_body1.m_jointList.prev = _local2.m_node1; }; _local2.m_body1.m_jointList = _local2.m_node1; _local2.m_node2.joint = _local2; _local2.m_node2.other = _local2.m_body1; _local2.m_node2.prev = null; _local2.m_node2.next = _local2.m_body2.m_jointList; if (_local2.m_body2.m_jointList){ _local2.m_body2.m_jointList.prev = _local2.m_node2; }; _local2.m_body2.m_jointList = _local2.m_node2; if (_arg1.collideConnected == false){ _local3 = ((_arg1.body1.m_shapeCount < _arg1.body2.m_shapeCount)) ? _arg1.body1 : _arg1.body2; _local4 = _local3.m_shapeList; while (_local4) { _local4.RefilterProxy(m_broadPhase, _local3.m_xf); _local4 = _local4.m_next; }; }; return (_local2); } public function DestroyJoint(_arg1:b2Joint):void{ var _local5:b2Body; var _local6:b2Shape; var _local2:Boolean = _arg1.m_collideConnected; if (_arg1.m_prev){ _arg1.m_prev.m_next = _arg1.m_next; }; if (_arg1.m_next){ _arg1.m_next.m_prev = _arg1.m_prev; }; if (_arg1 == m_jointList){ m_jointList = _arg1.m_next; }; var _local3:b2Body = _arg1.m_body1; var _local4:b2Body = _arg1.m_body2; _local3.WakeUp(); _local4.WakeUp(); if (_arg1.m_node1.prev){ _arg1.m_node1.prev.next = _arg1.m_node1.next; }; if (_arg1.m_node1.next){ _arg1.m_node1.next.prev = _arg1.m_node1.prev; }; if (_arg1.m_node1 == _local3.m_jointList){ _local3.m_jointList = _arg1.m_node1.next; }; _arg1.m_node1.prev = null; _arg1.m_node1.next = null; if (_arg1.m_node2.prev){ _arg1.m_node2.prev.next = _arg1.m_node2.next; }; if (_arg1.m_node2.next){ _arg1.m_node2.next.prev = _arg1.m_node2.prev; }; if (_arg1.m_node2 == _local4.m_jointList){ _local4.m_jointList = _arg1.m_node2.next; }; _arg1.m_node2.prev = null; _arg1.m_node2.next = null; b2Joint.Destroy(_arg1, m_blockAllocator); m_jointCount--; if (_local2 == false){ _local5 = ((_local3.m_shapeCount < _local4.m_shapeCount)) ? _local3 : _local4; _local6 = _local5.m_shapeList; while (_local6) { _local6.RefilterProxy(m_broadPhase, _local5.m_xf); _local6 = _local6.m_next; }; }; } public function SetContactListener(_arg1:b2ContactListener):void{ m_contactListener = _arg1; } public function CreateBody(_arg1:b2BodyDef):b2Body{ if (m_lock == true){ return (null); }; var _local2:b2Body = new b2Body(_arg1, this); _local2.m_prev = null; _local2.m_next = m_bodyList; if (m_bodyList){ m_bodyList.m_prev = _local2; }; m_bodyList = _local2; m_bodyCount++; return (_local2); } public function SetBoundaryListener(_arg1:b2BoundaryListener):void{ m_boundaryListener = _arg1; } public function SetDestructionListener(_arg1:b2DestructionListener):void{ m_destructionListener = _arg1; } public function Step(_arg1:Number, _arg2:int):void{ m_lock = true; var _local3:b2TimeStep = new b2TimeStep(); _local3.dt = _arg1; _local3.maxIterations = _arg2; if (_arg1 > 0){ _local3.inv_dt = (1 / _arg1); } else { _local3.inv_dt = 0; }; _local3.dtRatio = (m_inv_dt0 * _arg1); _local3.positionCorrection = m_positionCorrection; _local3.warmStarting = m_warmStarting; m_contactManager.Collide(); if (_local3.dt > 0){ Solve(_local3); }; if (((m_continuousPhysics) && ((_local3.dt > 0)))){ SolveTOI(_local3); }; DrawDebugData(); m_inv_dt0 = _local3.inv_dt; m_lock = false; } public function GetBodyCount():int{ return (m_bodyCount); } public function GetJointCount():int{ return (m_jointCount); } } }//package Box2D.Dynamics
Section 122
//MD5 (com.adobe.crypto.MD5) package com.adobe.crypto { import flash.utils.*; import com.adobe.utils.*; public class MD5 { public static var digest:ByteArray; private static function ff(_arg1:int, _arg2:int, _arg3:int, _arg4:int, _arg5:int, _arg6:int, _arg7:int):int{ return (transform(f, _arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7)); } private static function f(_arg1:int, _arg2:int, _arg3:int):int{ return (((_arg1 & _arg2) | (~(_arg1) & _arg3))); } private static function g(_arg1:int, _arg2:int, _arg3:int):int{ return (((_arg1 & _arg3) | (_arg2 & ~(_arg3)))); } private static function h(_arg1:int, _arg2:int, _arg3:int):int{ return (((_arg1 ^ _arg2) ^ _arg3)); } private static function i(_arg1:int, _arg2:int, _arg3:int):int{ return ((_arg2 ^ (_arg1 | ~(_arg3)))); } private static function transform(_arg1:Function, _arg2:int, _arg3:int, _arg4:int, _arg5:int, _arg6:int, _arg7:int, _arg8:int):int{ var _local9:int = (((_arg2 + int(_arg1(_arg3, _arg4, _arg5))) + _arg6) + _arg8); return ((IntUtil.rol(_local9, _arg7) + _arg3)); } private static function hh(_arg1:int, _arg2:int, _arg3:int, _arg4:int, _arg5:int, _arg6:int, _arg7:int):int{ return (transform(h, _arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7)); } public static function hash(_arg1:String):String{ var _local2:ByteArray = new ByteArray(); _local2.writeUTFBytes(_arg1); return (hashBinary(_local2)); } private static function createBlocks(_arg1:ByteArray):Array{ var _local2:Array = new Array(); var _local3:int = (_arg1.length * 8); var _local4 = 0xFF; var _local5:int; while (_local5 < _local3) { _local2[int((_local5 >> 5))] = (_local2[int((_local5 >> 5))] | ((_arg1[(_local5 / 8)] & _local4) << (_local5 % 32))); _local5 = (_local5 + 8); }; _local2[int((_local3 >> 5))] = (_local2[int((_local3 >> 5))] | (128 << (_local3 % 32))); _local2[int(((((_local3 + 64) >>> 9) << 4) + 14))] = _local3; return (_local2); } public static function hashBinary(_arg1:ByteArray):String{ var _local6:int; var _local7:int; var _local8:int; var _local9:int; var _local2 = 1732584193; var _local3 = -271733879; var _local4 = -1732584194; var _local5 = 271733878; var _local10:Array = createBlocks(_arg1); var _local11:int = _local10.length; var _local12:int; while (_local12 < _local11) { _local6 = _local2; _local7 = _local3; _local8 = _local4; _local9 = _local5; _local2 = ff(_local2, _local3, _local4, _local5, _local10[int((_local12 + 0))], 7, -680876936); _local5 = ff(_local5, _local2, _local3, _local4, _local10[int((_local12 + 1))], 12, -389564586); _local4 = ff(_local4, _local5, _local2, _local3, _local10[int((_local12 + 2))], 17, 606105819); _local3 = ff(_local3, _local4, _local5, _local2, _local10[int((_local12 + 3))], 22, -1044525330); _local2 = ff(_local2, _local3, _local4, _local5, _local10[int((_local12 + 4))], 7, -176418897); _local5 = ff(_local5, _local2, _local3, _local4, _local10[int((_local12 + 5))], 12, 1200080426); _local4 = ff(_local4, _local5, _local2, _local3, _local10[int((_local12 + 6))], 17, -1473231341); _local3 = ff(_local3, _local4, _local5, _local2, _local10[int((_local12 + 7))], 22, -45705983); _local2 = ff(_local2, _local3, _local4, _local5, _local10[int((_local12 + 8))], 7, 1770035416); _local5 = ff(_local5, _local2, _local3, _local4, _local10[int((_local12 + 9))], 12, -1958414417); _local4 = ff(_local4, _local5, _local2, _local3, _local10[int((_local12 + 10))], 17, -42063); _local3 = ff(_local3, _local4, _local5, _local2, _local10[int((_local12 + 11))], 22, -1990404162); _local2 = ff(_local2, _local3, _local4, _local5, _local10[int((_local12 + 12))], 7, 1804603682); _local5 = ff(_local5, _local2, _local3, _local4, _local10[int((_local12 + 13))], 12, -40341101); _local4 = ff(_local4, _local5, _local2, _local3, _local10[int((_local12 + 14))], 17, -1502002290); _local3 = ff(_local3, _local4, _local5, _local2, _local10[int((_local12 + 15))], 22, 1236535329); _local2 = gg(_local2, _local3, _local4, _local5, _local10[int((_local12 + 1))], 5, -165796510); _local5 = gg(_local5, _local2, _local3, _local4, _local10[int((_local12 + 6))], 9, -1069501632); _local4 = gg(_local4, _local5, _local2, _local3, _local10[int((_local12 + 11))], 14, 643717713); _local3 = gg(_local3, _local4, _local5, _local2, _local10[int((_local12 + 0))], 20, -373897302); _local2 = gg(_local2, _local3, _local4, _local5, _local10[int((_local12 + 5))], 5, -701558691); _local5 = gg(_local5, _local2, _local3, _local4, _local10[int((_local12 + 10))], 9, 38016083); _local4 = gg(_local4, _local5, _local2, _local3, _local10[int((_local12 + 15))], 14, -660478335); _local3 = gg(_local3, _local4, _local5, _local2, _local10[int((_local12 + 4))], 20, -405537848); _local2 = gg(_local2, _local3, _local4, _local5, _local10[int((_local12 + 9))], 5, 568446438); _local5 = gg(_local5, _local2, _local3, _local4, _local10[int((_local12 + 14))], 9, -1019803690); _local4 = gg(_local4, _local5, _local2, _local3, _local10[int((_local12 + 3))], 14, -187363961); _local3 = gg(_local3, _local4, _local5, _local2, _local10[int((_local12 + 8))], 20, 1163531501); _local2 = gg(_local2, _local3, _local4, _local5, _local10[int((_local12 + 13))], 5, -1444681467); _local5 = gg(_local5, _local2, _local3, _local4, _local10[int((_local12 + 2))], 9, -51403784); _local4 = gg(_local4, _local5, _local2, _local3, _local10[int((_local12 + 7))], 14, 1735328473); _local3 = gg(_local3, _local4, _local5, _local2, _local10[int((_local12 + 12))], 20, -1926607734); _local2 = hh(_local2, _local3, _local4, _local5, _local10[int((_local12 + 5))], 4, -378558); _local5 = hh(_local5, _local2, _local3, _local4, _local10[int((_local12 + 8))], 11, -2022574463); _local4 = hh(_local4, _local5, _local2, _local3, _local10[int((_local12 + 11))], 16, 1839030562); _local3 = hh(_local3, _local4, _local5, _local2, _local10[int((_local12 + 14))], 23, -35309556); _local2 = hh(_local2, _local3, _local4, _local5, _local10[int((_local12 + 1))], 4, -1530992060); _local5 = hh(_local5, _local2, _local3, _local4, _local10[int((_local12 + 4))], 11, 1272893353); _local4 = hh(_local4, _local5, _local2, _local3, _local10[int((_local12 + 7))], 16, -155497632); _local3 = hh(_local3, _local4, _local5, _local2, _local10[int((_local12 + 10))], 23, -1094730640); _local2 = hh(_local2, _local3, _local4, _local5, _local10[int((_local12 + 13))], 4, 681279174); _local5 = hh(_local5, _local2, _local3, _local4, _local10[int((_local12 + 0))], 11, -358537222); _local4 = hh(_local4, _local5, _local2, _local3, _local10[int((_local12 + 3))], 16, -722521979); _local3 = hh(_local3, _local4, _local5, _local2, _local10[int((_local12 + 6))], 23, 76029189); _local2 = hh(_local2, _local3, _local4, _local5, _local10[int((_local12 + 9))], 4, -640364487); _local5 = hh(_local5, _local2, _local3, _local4, _local10[int((_local12 + 12))], 11, -421815835); _local4 = hh(_local4, _local5, _local2, _local3, _local10[int((_local12 + 15))], 16, 530742520); _local3 = hh(_local3, _local4, _local5, _local2, _local10[int((_local12 + 2))], 23, -995338651); _local2 = ii(_local2, _local3, _local4, _local5, _local10[int((_local12 + 0))], 6, -198630844); _local5 = ii(_local5, _local2, _local3, _local4, _local10[int((_local12 + 7))], 10, 1126891415); _local4 = ii(_local4, _local5, _local2, _local3, _local10[int((_local12 + 14))], 15, -1416354905); _local3 = ii(_local3, _local4, _local5, _local2, _local10[int((_local12 + 5))], 21, -57434055); _local2 = ii(_local2, _local3, _local4, _local5, _local10[int((_local12 + 12))], 6, 1700485571); _local5 = ii(_local5, _local2, _local3, _local4, _local10[int((_local12 + 3))], 10, -1894986606); _local4 = ii(_local4, _local5, _local2, _local3, _local10[int((_local12 + 10))], 15, -1051523); _local3 = ii(_local3, _local4, _local5, _local2, _local10[int((_local12 + 1))], 21, -2054922799); _local2 = ii(_local2, _local3, _local4, _local5, _local10[int((_local12 + 8))], 6, 1873313359); _local5 = ii(_local5, _local2, _local3, _local4, _local10[int((_local12 + 15))], 10, -30611744); _local4 = ii(_local4, _local5, _local2, _local3, _local10[int((_local12 + 6))], 15, -1560198380); _local3 = ii(_local3, _local4, _local5, _local2, _local10[int((_local12 + 13))], 21, 1309151649); _local2 = ii(_local2, _local3, _local4, _local5, _local10[int((_local12 + 4))], 6, -145523070); _local5 = ii(_local5, _local2, _local3, _local4, _local10[int((_local12 + 11))], 10, -1120210379); _local4 = ii(_local4, _local5, _local2, _local3, _local10[int((_local12 + 2))], 15, 718787259); _local3 = ii(_local3, _local4, _local5, _local2, _local10[int((_local12 + 9))], 21, -343485551); _local2 = (_local2 + _local6); _local3 = (_local3 + _local7); _local4 = (_local4 + _local8); _local5 = (_local5 + _local9); _local12 = (_local12 + 16); }; digest = new ByteArray(); digest.writeInt(_local2); digest.writeInt(_local3); digest.writeInt(_local4); digest.writeInt(_local5); digest.position = 0; return ((((IntUtil.toHex(_local2) + IntUtil.toHex(_local3)) + IntUtil.toHex(_local4)) + IntUtil.toHex(_local5))); } private static function gg(_arg1:int, _arg2:int, _arg3:int, _arg4:int, _arg5:int, _arg6:int, _arg7:int):int{ return (transform(g, _arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7)); } private static function ii(_arg1:int, _arg2:int, _arg3:int, _arg4:int, _arg5:int, _arg6:int, _arg7:int):int{ return (transform(i, _arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7)); } public static function hashBytes(_arg1:ByteArray):String{ return (hashBinary(_arg1)); } } }//package com.adobe.crypto
Section 123
//IntUtil (com.adobe.utils.IntUtil) package com.adobe.utils { public class IntUtil { private static var hexChars:String = "0123456789abcdef"; public static function toHex(_arg1:int, _arg2:Boolean=false):String{ var _local4:int; var _local5:int; var _local3 = ""; if (_arg2){ _local4 = 0; while (_local4 < 4) { _local3 = (_local3 + (hexChars.charAt(((_arg1 >> (((3 - _local4) * 8) + 4)) & 15)) + hexChars.charAt(((_arg1 >> ((3 - _local4) * 8)) & 15)))); _local4++; }; } else { _local5 = 0; while (_local5 < 4) { _local3 = (_local3 + (hexChars.charAt(((_arg1 >> ((_local5 * 8) + 4)) & 15)) + hexChars.charAt(((_arg1 >> (_local5 * 8)) & 15)))); _local5++; }; }; return (_local3); } public static function ror(_arg1:int, _arg2:int):uint{ var _local3:int = (32 - _arg2); return (((_arg1 << _local3) | (_arg1 >>> (32 - _local3)))); } public static function rol(_arg1:int, _arg2:int):int{ return (((_arg1 << _arg2) | (_arg1 >>> (32 - _arg2)))); } } }//package com.adobe.utils
Section 124
//AbstractApplication (com.bigwigmedia.application.AbstractApplication) package com.bigwigmedia.application { import flash.display.*; import com.bigwigmedia.effects.*; import flash.events.*; import com.bigwigmedia.preloaders.*; import com.bigwigmedia.events.*; import com.bigwigmedia.core.*; import flash.system.*; public class AbstractApplication extends MovieClip implements IApplication { protected var _cursorHolder:Sprite; private var _info:ApplicationInfo; protected var _overlay:AbstractOverlay; protected var _mask:Sprite; protected var _background:Sprite; protected var _mainView:DisplayObjectContainer; protected var _preloader:AbstractPreloader; public function AbstractApplication(_arg1:String, _arg2:String, _arg3:String, _arg4:String, _arg5:String=null){ ApplicationGlobals.bigwigmedia_ns::_application = this; _info = new ApplicationInfo(_arg1, _arg2, _arg3, _arg4, _arg5); stop(); if (((root) && (root.loaderInfo))){ root.loaderInfo.addEventListener(Event.INIT, onRootInitHandler); }; } protected function createMask(_arg1:uint=0):void{ if (_mask){ return; }; _mask = new Sprite(); var _local2:Graphics = _mask.graphics; _local2.lineStyle(); _local2.beginFill(_arg1, 1); var _local3:int = nominalWidth; var _local4:int = nominalHeight; _local2.moveTo(0, 0); _local2.lineTo(_local3, 0); _local2.lineTo(_local3, _local4); _local2.lineTo(0, _local4); _local2.lineTo(0, 0); var _local5:int = ((maxScreenWidth - _local3) / 2); var _local6:int = ((maxScreenHeight - _local4) / 2); _local2.moveTo(-(_local5), -(_local6)); _local2.lineTo((_local3 + _local5), -(_local6)); _local2.lineTo((_local3 + _local5), (_local4 + _local6)); _local2.lineTo(-(_local5), (_local4 + _local6)); _local2.lineTo(-(_local5), -(_local6)); _local2.endFill(); addChild(_mask); sortChildren(); } private function initialize():void{ stage.scaleMode = StageScaleMode.NO_SCALE; stage.align = ""; dispatchEvent(new ApplicationEvent(ApplicationEvent.INIT)); } protected function fillBackground(_arg1:uint=0):void{ if (!_background){ _background = new Sprite(); addChild(_background); sortChildren(); }; var _local2:Graphics = _background.graphics; _local2.clear(); _local2.lineStyle(); _local2.beginFill(_arg1, 1); _local2.drawRect(0, 0, nominalWidth, nominalHeight); _local2.endFill(); } protected function loadingComplete():void{ dispatchEvent(new ApplicationEvent(ApplicationEvent.READY)); } protected function removeMask():void{ if (_mask){ removeChild(_mask); _mask = null; }; } protected function createMainView(_arg1:Object):void{ var _local2:Class; if (_mainView){ return; }; if ((_arg1 is Class)){ _local2 = (_arg1 as Class); _mainView = new (_local2); } else { if ((_arg1 is DisplayObjectContainer)){ _mainView = (_arg1 as DisplayObjectContainer); } else { throw (new ArgumentError("Parameter view must be Class or DisplayObjectContainer object.")); }; }; addChild(_mainView); sortChildren(); } private function onOverlayCompleteHandler(_arg1:Event):void{ removeOverlay(); } public function get nominalHeight():int{ return (loaderInfo.height); } public function get cursorHolder():Sprite{ if (!_cursorHolder){ _cursorHolder = new Sprite(); _cursorHolder.mouseEnabled = false; _cursorHolder.mouseChildren = false; addChild(_cursorHolder); sortChildren(); }; return (_cursorHolder); } public function removeOverlay():void{ if (_overlay){ _overlay.removeEventListener(Event.COMPLETE, onOverlayCompleteHandler); removeChild(_overlay); _overlay.dispose(); _overlay = null; }; } public function get info():ApplicationInfo{ return (_info); } protected function get maxScreenWidth():int{ return (Capabilities.screenResolutionX); } protected function get maxScreenHeight():int{ return (Capabilities.screenResolutionY); } public function createOverlay(_arg1:AbstractOverlay):void{ if (_overlay){ return; }; _overlay = _arg1; _overlay.addEventListener(Event.COMPLETE, onOverlayCompleteHandler); addChild(_overlay); sortChildren(); _overlay.start(); } protected function sortChildren():void{ var _local4:DisplayObject; var _local1:Array = []; if (_background){ _local1.push(_background); }; if (_mainView){ _local1.push(_mainView); }; if (_preloader){ _local1.push(_preloader); }; if (_overlay){ _local1.push(_overlay); }; if (_mask){ _local1.push(_mask); }; if (_cursorHolder){ _local1.push(_cursorHolder); }; var _local2:int = _local1.length; var _local3:int; while (_local3 < _local2) { _local4 = _local1[_local3]; if (getChildIndex(_local4) != _local3){ setChildIndex(_local4, _local3); }; _local3++; }; } protected function startPreloading(_arg1:AbstractPreloader=null):void{ if (_preloader){ return; }; _preloader = ((_arg1) || (new EmptyPreloader())); addChild(_preloader); _preloader.addEventListener(PreloaderEvent.COMPLETE, preloadingCompleteHandler); } private function onAddedToStageHandler(_arg1:Event):void{ removeEventListener(Event.ADDED_TO_STAGE, onAddedToStageHandler); initialize(); } public function get nominalWidth():int{ return (loaderInfo.width); } public function getURLVariable(_arg1:String, _arg2:Boolean=false):String{ var _local4:String; var _local5:String; var _local3:Object = loaderInfo.parameters; if (_arg2){ return (_local3[_arg1]); }; _local4 = _arg1.toLowerCase(); for (_local5 in _local3) { if (_local5.toLowerCase() == _local4){ return (_local3[_local5]); }; }; return (null); } private function preloadingCompleteHandler(_arg1:PreloaderEvent):void{ _preloader.removeEventListener(PreloaderEvent.COMPLETE, preloadingCompleteHandler); nextFrame(); dispatchEvent(new ApplicationEvent(ApplicationEvent.LOAD_COMPLETE)); loadingComplete(); } protected function clearBackground():void{ if (_background){ _background.graphics.clear(); }; } public function getClassByName(_arg1:String):Class{ var _local2:ApplicationDomain = loaderInfo.applicationDomain; if (_local2.hasDefinition(_arg1)){ return ((_local2.getDefinition(_arg1) as Class)); }; return (null); } public function get nominalFrameRate():Number{ return (loaderInfo.frameRate); } private function onRootInitHandler(_arg1:Event):void{ root.loaderInfo.removeEventListener(Event.INIT, onRootInitHandler); if (stage){ initialize(); } else { addEventListener(Event.ADDED_TO_STAGE, onAddedToStageHandler); }; } public function get mainView():DisplayObjectContainer{ return (_mainView); } } }//package com.bigwigmedia.application
Section 125
//AbstractApplication_2DPLay (com.bigwigmedia.application.AbstractApplication_2DPLay) package com.bigwigmedia.application { public class AbstractApplication_2DPLay extends AbstractApplication { public function AbstractApplication_2DPLay(_arg1:String, _arg2:String, _arg3:String, _arg4:String, _arg5:String=null){ super(_arg1, _arg2, _arg3, _arg4, _arg5); } final public function getBigWigWrappedGameData():Object{ var _local1:Object = {url:loaderInfo.url, gameid:info.id, affid:loaderInfo.parameters.affid}; return (_local1); } } }//package com.bigwigmedia.application
Section 126
//ApplicationGlobals (com.bigwigmedia.application.ApplicationGlobals) package com.bigwigmedia.application { import com.bigwigmedia.core.*; public class ApplicationGlobals { bigwigmedia_ns static var _application:IApplication; public static function get application():IApplication{ return (bigwigmedia_ns::_application); } } }//package com.bigwigmedia.application
Section 127
//ApplicationInfo (com.bigwigmedia.application.ApplicationInfo) package com.bigwigmedia.application { public class ApplicationInfo { private var _sharedObjectPath:String; private var _name:String; private var _sharedObjectName:String; private var _version:String; private var _id:String; public function ApplicationInfo(_arg1:String, _arg2:String, _arg3:String, _arg4:String, _arg5:String){ _name = _arg1; _id = _arg2; _version = _arg3; _sharedObjectName = _arg4; _sharedObjectPath = _arg5; } public function get id():String{ return (_id); } public function get sharedObjectPath():String{ return (_sharedObjectPath); } public function get name():String{ return (_name); } public function get sharedObjectName():String{ return (_sharedObjectName); } public function get version():String{ return (_version); } } }//package com.bigwigmedia.application
Section 128
//IApplication (com.bigwigmedia.application.IApplication) package com.bigwigmedia.application { import flash.display.*; import com.bigwigmedia.effects.*; import flash.events.*; public interface IApplication extends IEventDispatcher { function get cursorHolder():Sprite; function get nominalHeight():int; function getClassByName(_arg1:String):Class; function get mainView():DisplayObjectContainer; function get nominalWidth():int; function removeOverlay():void; function get info():ApplicationInfo; function get nominalFrameRate():Number; function createOverlay(_arg1:AbstractOverlay):void; function getURLVariable(_arg1:String, _arg2:Boolean=false):String; function get stage():Stage; } }//package com.bigwigmedia.application
Section 129
//bigwigmedia_ns (com.bigwigmedia.core.bigwigmedia_ns) package com.bigwigmedia.core { public namespace bigwigmedia_ns = "http://www.bigwigmedia.com/flash/as3/namespace"; }//package com.bigwigmedia.core
Section 130
//IDisposable (com.bigwigmedia.core.IDisposable) package com.bigwigmedia.core { public interface IDisposable { function dispose():void; } }//package com.bigwigmedia.core
Section 131
//IUpdatable (com.bigwigmedia.core.IUpdatable) package com.bigwigmedia.core { public interface IUpdatable { function update():void; } }//package com.bigwigmedia.core
Section 132
//Singleton (com.bigwigmedia.core.Singleton) package com.bigwigmedia.core { public class Singleton { private static var interfaceToClassHash:Object = {}; private static var interfaceToInstanceHash:Object = {}; public static function getClass(_arg1:String):Class{ return (interfaceToClassHash[_arg1]); } public static function registerClass(_arg1:String, _arg2:Class):void{ var _local3:Class = interfaceToClassHash[_arg1]; if (!_local3){ interfaceToClassHash[_arg1] = _arg2; }; } public static function getInstance(_arg1:String):Object{ var _local3:Class; var _local4:Object; var _local2:Object = interfaceToInstanceHash[_arg1]; if (_local2){ return (_local2); }; _local3 = interfaceToClassHash[_arg1]; if (!_local3){ throw (new Error((("No class registered for interface \"" + _arg1) + "\"."))); }; _local3.bigwigmedia_ns::singletonAccessor = true; _local4 = new (_local3); _local3.bigwigmedia_ns::singletonAccessor = true; interfaceToInstanceHash[_arg1] = _local4; return (_local4); } } }//package com.bigwigmedia.core
Section 133
//ColorDecoration (com.bigwigmedia.display.ColorDecoration) package com.bigwigmedia.display { import flash.display.*; import flash.geom.*; public class ColorDecoration implements IDecoration { private var _colorTransform:ColorTransform; public function ColorDecoration(_arg1:ColorTransform){ _colorTransform = _arg1; } public function remove(_arg1:DisplayObject):void{ _arg1.transform.colorTransform = new ColorTransform(); } public function apply(_arg1:DisplayObject):void{ _arg1.transform.colorTransform = _colorTransform; } } }//package com.bigwigmedia.display
Section 134
//FilterDecoration (com.bigwigmedia.display.FilterDecoration) package com.bigwigmedia.display { import flash.display.*; import flash.filters.*; public class FilterDecoration implements IDecoration { private var _filters:Array; public function FilterDecoration(... _args){ var _local4:BitmapFilter; _filters = []; super(); var _local2:int = _args.length; var _local3:int; while (_local3 < _local2) { _local4 = _args[_local3]; _filters.push(_local4.clone()); _local3++; }; } public function remove(_arg1:DisplayObject):void{ _arg1.filters = []; } public function apply(_arg1:DisplayObject):void{ _arg1.filters = _filters; } } }//package com.bigwigmedia.display
Section 135
//IDecoration (com.bigwigmedia.display.IDecoration) package com.bigwigmedia.display { import flash.display.*; public interface IDecoration { function remove(_arg1:DisplayObject):void; function apply(_arg1:DisplayObject):void; } }//package com.bigwigmedia.display
Section 136
//TintDecoration (com.bigwigmedia.display.TintDecoration) package com.bigwigmedia.display { import fl.motion.*; public class TintDecoration extends ColorDecoration implements IDecoration { public function TintDecoration(_arg1:uint, _arg2:Number){ var _local3:Color = new Color(); _local3.setTint(_arg1, _arg2); super(_local3); } } }//package com.bigwigmedia.display
Section 137
//AbstractOverlay (com.bigwigmedia.effects.AbstractOverlay) package com.bigwigmedia.effects { import flash.display.*; import com.bigwigmedia.application.*; import flash.events.*; import com.bigwigmedia.core.*; public class AbstractOverlay extends Sprite implements IDisposable { protected var appWidth:int; protected var appHeight:int; private var mouseBlocker:Sprite; public function AbstractOverlay(_arg1:Boolean=true){ appWidth = ApplicationGlobals.application.nominalWidth; appHeight = ApplicationGlobals.application.nominalHeight; mouseChildren = false; addEventListener(MouseEvent.CLICK, onMouseEventHandler, false, 100); addEventListener(MouseEvent.MOUSE_DOWN, onMouseEventHandler, false, 100); if (_arg1){ mouseBlocker = new Sprite(); mouseBlocker.graphics.lineStyle(0, 0, 0); mouseBlocker.graphics.beginFill(0, 0); mouseBlocker.graphics.drawRect(0, 0, appWidth, appHeight); mouseBlocker.graphics.endFill(); addChild(mouseBlocker); }; } public function start():void{ } private function onMouseEventHandler(_arg1:MouseEvent):void{ _arg1.stopImmediatePropagation(); } public function dispose():void{ removeEventListener(MouseEvent.CLICK, onMouseEventHandler); removeEventListener(MouseEvent.MOUSE_DOWN, onMouseEventHandler); if (mouseBlocker){ removeChild(mouseBlocker); mouseBlocker = null; }; } } }//package com.bigwigmedia.effects
Section 138
//BlackoutOverlay (com.bigwigmedia.effects.BlackoutOverlay) package com.bigwigmedia.effects { import flash.events.*; import com.boostworthy.animation.sequence.tweens.*; import com.boostworthy.animation.sequence.*; import com.boostworthy.animation.rendering.*; public class BlackoutOverlay extends AbstractOverlay { private var timeline:Timeline; private var _peakCallback:Function; private var _color:uint; private var _halfDuration:uint; private var _completeCallback:Function; public function BlackoutOverlay(_arg1:Function, _arg2:Function=null, _arg3:uint=16, _arg4:uint=0){ super(true); _peakCallback = _arg1; _completeCallback = _arg2; _halfDuration = int((_arg3 / 2)); _color = _arg4; } override public function start():void{ alpha = 0; graphics.beginFill(_color, 1); graphics.moveTo(0, 0); graphics.lineTo(appWidth, 0); graphics.lineTo(appWidth, appHeight); graphics.lineTo(0, appHeight); graphics.lineTo(0, 0); graphics.endFill(); timeline = new Timeline(RenderMethod.ENTER_FRAME); timeline.addTween(new Tween(this, "alpha", 1, 1, _halfDuration)); timeline.addTween(new Action(onPeak, [], null, [], (_halfDuration + 1))); timeline.addTween(new Tween(this, "alpha", 0, (_halfDuration + 2), ((_halfDuration * 2) + 1))); timeline.addTween(new Action(onComplete, [], null, [], ((_halfDuration * 2) + 2))); timeline.play(); } private function onComplete():void{ graphics.clear(); if (_completeCallback != null){ _completeCallback(); }; dispatchEvent(new Event(Event.COMPLETE)); } private function onPeak():void{ _peakCallback(); } override public function dispose():void{ super.dispose(); _peakCallback = null; _completeCallback = null; graphics.clear(); timeline.dispose(); timeline = null; } } }//package com.bigwigmedia.effects
Section 139
//ColorBeacon (com.bigwigmedia.effects.ColorBeacon) package com.bigwigmedia.effects { import flash.display.*; import flash.events.*; import fl.motion.*; public class ColorBeacon implements IBeacon { private var _color:Color; private var _target:DisplayObject; private var _halfMultiplier:Number; private var _dFrameCounter:Number; private var _frameCounter:Number;// = 0 public function ColorBeacon(_arg1:uint, _arg2:Number=1, _arg3:uint=30){ _color = new Color(); super(); _color.tintColor = _arg1; _halfMultiplier = (_arg2 / 2); _dFrameCounter = ((2 * Math.PI) / _arg3); } public function apply(_arg1:DisplayObject):void{ _target = _arg1; _target.addEventListener(Event.ENTER_FRAME, onEnterFrameHandler); } private function onEnterFrameHandler(_arg1:Event):void{ _color.tintMultiplier = (_halfMultiplier * (1 + Math.sin(_frameCounter))); _target.transform.colorTransform = _color; _frameCounter = (_frameCounter + _dFrameCounter); if (_frameCounter >= (2 * Math.PI)){ _frameCounter = 0; }; } public function dispose():void{ _target.removeEventListener(Event.ENTER_FRAME, onEnterFrameHandler); _target = null; _color = null; } } }//package com.bigwigmedia.effects
Section 140
//IBeacon (com.bigwigmedia.effects.IBeacon) package com.bigwigmedia.effects { import flash.display.*; import com.bigwigmedia.core.*; public interface IBeacon extends IDisposable { function apply(_arg1:DisplayObject):void; } }//package com.bigwigmedia.effects
Section 141
//ApplicationEvent (com.bigwigmedia.events.ApplicationEvent) package com.bigwigmedia.events { import flash.events.*; public class ApplicationEvent extends Event { public static const INIT:String = "ApplicationEvent.init"; public static const LOAD_COMPLETE:String = "ApplicationEvent.loadComplete"; public static const READY:String = "ApplicationEvent.ready"; public function ApplicationEvent(_arg1:String){ super(_arg1, false, false); } override public function toString():String{ return (formatToString("ApplicationEvent", "type")); } override public function clone():Event{ return (new ApplicationEvent(type)); } } }//package com.bigwigmedia.events
Section 142
//ComponentEvent (com.bigwigmedia.events.ComponentEvent) package com.bigwigmedia.events { import flash.events.*; public class ComponentEvent extends Event { public static const BUTTON_DOWN:String = "ComponentEvent.buttonDown"; public static const CHANGE:String = "ComponentEvent.change"; public static const MOVE:String = "ComponentEvent.move"; public static const RESIZE:String = "ComponentEvent.resize"; public static const CLOSE:String = "ComponentEvent.close"; public static const SELECT:String = "ComponentEvent.select"; public function ComponentEvent(_arg1:String, _arg2:Boolean=false, _arg3:Boolean=false){ super(_arg1, _arg2, _arg3); } override public function toString():String{ return (formatToString("ComponentEvent", "type", "bubbles", "cancelable")); } override public function clone():Event{ return (new ComponentEvent(type, bubbles, cancelable)); } } }//package com.bigwigmedia.events
Section 143
//EventPriority (com.bigwigmedia.events.EventPriority) package com.bigwigmedia.events { public class EventPriority { public static const DEFAULT:int = 0; public static const HIGH:int = 2000; public static const LOW:int = -2000; public static const LOWEST:int = -5000; public static const HIGHEST:int = 5000; } }//package com.bigwigmedia.events
Section 144
//KeyInputEvent (com.bigwigmedia.events.KeyInputEvent) package com.bigwigmedia.events { import flash.events.*; public class KeyInputEvent extends KeyboardEvent { private var _keyAction:String; public static const SEQUENCE:String = "KeyInputEvent.sequence"; public static const KEY_DOWN:String = "KeyInputEvent.keyInputDown"; public static const KEY_UP:String = "KeyInputEvent.keyInputUp"; public function KeyInputEvent(_arg1:String, _arg2:String, _arg3:uint, _arg4:uint, _arg5:uint, _arg6:Boolean, _arg7:Boolean, _arg8:Boolean){ super(_arg1, false, false, _arg3, _arg4, _arg5, _arg6, _arg7, _arg8); _keyAction = _arg2; } override public function toString():String{ return (formatToString("KeyInputEvent", "type", "keyAction", "keyCode")); } public function get keyAction():String{ return (_keyAction); } override public function clone():Event{ return (new KeyInputEvent(type, keyAction, charCode, keyCode, keyLocation, ctrlKey, altKey, shiftKey)); } } }//package com.bigwigmedia.events
Section 145
//PreloaderEvent (com.bigwigmedia.events.PreloaderEvent) package com.bigwigmedia.events { import flash.events.*; public class PreloaderEvent extends Event { private var _percentLoaded:Number; public static const COMPLETE:String = "PreloaderEvent.complete"; public static const PROGRESS:String = "PreloaderEvent.progress"; public function PreloaderEvent(_arg1:String, _arg2:Number){ super(_arg1, false, false); _percentLoaded = _arg2; } public function get percentLoaded():Number{ return (_percentLoaded); } override public function toString():String{ return (formatToString("PreloaderEvent", "type", "percentLoaded")); } override public function clone():Event{ return (new PreloaderEvent(type, _percentLoaded)); } } }//package com.bigwigmedia.events
Section 146
//FontManager (com.bigwigmedia.font.FontManager) package com.bigwigmedia.font { import flash.system.*; import flash.text.*; import com.bigwigmedia.core.*; import flash.errors.*; public class FontManager implements IFontManager { private var _domain:ApplicationDomain; bigwigmedia_ns static var singletonAccessor:Boolean = false; public function FontManager(){ if (!bigwigmedia_ns::singletonAccessor){ throw (new IllegalOperationError("Use method getInstance of Singleton class to get instance of FontManager.")); }; _domain = ApplicationDomain.currentDomain; } public function registerFonts(... _args):void{ var _local2:uint; while (_local2 < _args.length) { Font.registerFont(getFontClass(_args[_local2])); _local2++; }; } public function getFontNameByID(_arg1:String):String{ return (getFont(_arg1).fontName); } private function getFontClass(_arg1:String):Class{ if (_domain){ return ((_domain.getDefinition(_arg1) as Class)); }; return ((ApplicationDomain.currentDomain.getDefinition(_arg1) as Class)); } private function getFont(_arg1:String):Font{ var _local2:Class = getFontClass(_arg1); return ((new (_local2) as Font)); } public function setDomain(_arg1:ApplicationDomain):void{ _domain = _arg1; } } }//package com.bigwigmedia.font
Section 147
//IFontManager (com.bigwigmedia.font.IFontManager) package com.bigwigmedia.font { import flash.system.*; public interface IFontManager { function registerFonts(... _args):void; function getFontNameByID(_arg1:String):String; function setDomain(_arg1:ApplicationDomain):void; } }//package com.bigwigmedia.font
Section 148
//KeyInputManager (com.bigwigmedia.input.KeyInputManager) package com.bigwigmedia.input { import flash.display.*; import flash.events.*; import com.bigwigmedia.events.*; import com.bigwigmedia.core.*; public class KeyInputManager extends EventDispatcher implements IDisposable { private var actionToMapperHash:Object; private var target:InteractiveObject; private var keySequences:Object; private var keycodeToMapperHash:Object; public function KeyInputManager(_arg1:InteractiveObject){ actionToMapperHash = {}; keycodeToMapperHash = {}; keySequences = {}; super(); this.target = _arg1; this.target.addEventListener(KeyboardEvent.KEY_DOWN, onKeyDownHandler); this.target.addEventListener(KeyboardEvent.KEY_UP, onKeyUpHandler); } public function mapKey(_arg1:String, _arg2:uint):void{ var _local3:KeyMapper; _local3 = keycodeToMapperHash[_arg2]; if (_local3){ unmapKey(_local3.keyAction); }; _local3 = actionToMapperHash[_arg1]; if (_local3){ unmapKey(_arg1); }; _local3 = new KeyMapper(_arg1, _arg2); actionToMapperHash[_arg1] = _local3; keycodeToMapperHash[_arg2] = _local3; } public function unmapSequence(_arg1:String):void{ delete keySequences[_arg1]; } private function onKeyDownHandler(_arg1:KeyboardEvent):void{ var _local4:KeySequence; var _local2:uint = _arg1.keyCode; var _local3:KeyMapper = keycodeToMapperHash[_local2]; if (_local3){ if (!_local3.isDown){ dispatchEvent(new KeyInputEvent(KeyInputEvent.KEY_DOWN, _local3.keyAction, _arg1.charCode, _local2, _arg1.keyLocation, _arg1.ctrlKey, _arg1.altKey, _arg1.shiftKey)); }; _local3.isDown = true; }; for each (_local4 in keySequences) { if (_local4.checkNext(_local2)){ dispatchEvent(new KeyInputEvent(KeyInputEvent.SEQUENCE, _local4.keyAction, _arg1.charCode, _local2, _arg1.keyLocation, _arg1.ctrlKey, _arg1.altKey, _arg1.shiftKey)); }; }; } public function dispose():void{ unmapAll(); target.removeEventListener(KeyboardEvent.KEY_DOWN, onKeyDownHandler); target.removeEventListener(KeyboardEvent.KEY_UP, onKeyUpHandler); target = null; } private function onKeyUpHandler(_arg1:KeyboardEvent):void{ var _local2:KeyMapper = keycodeToMapperHash[_arg1.keyCode]; if (_local2){ if (_local2.isDown){ dispatchEvent(new KeyInputEvent(KeyInputEvent.KEY_UP, _local2.keyAction, _arg1.charCode, _arg1.keyCode, _arg1.keyLocation, _arg1.ctrlKey, _arg1.altKey, _arg1.shiftKey)); }; _local2.isDown = false; }; } public function isKeyDown(_arg1:String):Boolean{ var _local2:KeyMapper = actionToMapperHash[_arg1]; return (((_local2) && (_local2.isDown))); } public function unmapKey(_arg1:String):void{ var _local2:KeyMapper = actionToMapperHash[_arg1]; if (_local2){ delete actionToMapperHash[_arg1]; delete keycodeToMapperHash[_local2.keyCode]; }; } public function mapSequence(_arg1:String, _arg2:Array):void{ keySequences[_arg1] = new KeySequence(_arg1, _arg2.slice()); } public function unmapAll():void{ actionToMapperHash = {}; keycodeToMapperHash = {}; keySequences = {}; } public function depressAll():void{ var _local1:KeyMapper; for each (_local1 in actionToMapperHash) { _local1.isDown = false; }; } } }//package com.bigwigmedia.input
Section 149
//KeyMapper (com.bigwigmedia.input.KeyMapper) package com.bigwigmedia.input { public class KeyMapper { private var _keyAction:String; var isDown:Boolean;// = false private var _keyCode:uint; public function KeyMapper(_arg1:String, _arg2:uint){ _keyAction = _arg1; _keyCode = _arg2; } public function get keyAction():String{ return (_keyAction); } public function get keyCode():uint{ return (_keyCode); } } }//package com.bigwigmedia.input
Section 150
//KeySequence (com.bigwigmedia.input.KeySequence) package com.bigwigmedia.input { public class KeySequence { private var _sequence:Array; private var nextKeyIndex:int;// = 0 private var _keyAction:String; public function KeySequence(_arg1:String, _arg2:Array){ _keyAction = _arg1; _sequence = _arg2; } public function get keyAction():String{ return (_keyAction); } public function checkNext(_arg1:uint):Boolean{ if (_sequence[nextKeyIndex] != _arg1){ nextKeyIndex = 0; }; if (_sequence[nextKeyIndex] == _arg1){ if (++nextKeyIndex == _sequence.length){ nextKeyIndex = 0; return (true); }; }; return (false); } } }//package com.bigwigmedia.input
Section 151
//ISOManager (com.bigwigmedia.net.ISOManager) package com.bigwigmedia.net { public interface ISOManager { function flush(_arg1:int=0):String; function get dataEmpty():Boolean; function getValue(_arg1:String):Object; function clear():void; function setValue(_arg1:String, _arg2:Object):void; } }//package com.bigwigmedia.net
Section 152
//IURLCaller (com.bigwigmedia.net.IURLCaller) package com.bigwigmedia.net { public interface IURLCaller { function submitScore(_arg1:Object):void; function mainLink():void; function viewScores():void; function playMoreGames():void; function getURL(_arg1:String, _arg2:String="_blank"):void; function downloadGame():void; function getGame():void; } }//package com.bigwigmedia.net
Section 153
//SOManager (com.bigwigmedia.net.SOManager) package com.bigwigmedia.net { import com.bigwigmedia.core.*; import com.bigwigmedia.utils.*; import flash.net.*; import com.bigwigmedia.application.*; import flash.errors.*; public class SOManager implements ISOManager { private var dataObject:Object; private var so:SharedObject; bigwigmedia_ns static var singletonAccessor:Boolean = false; public function SOManager(){ super(); if (!bigwigmedia_ns::singletonAccessor){ throw (new IllegalOperationError("Use method getInstance of Singleton class to get instance of SOManager.")); }; try { so = SharedObject.getLocal(ApplicationGlobals.application.info.sharedObjectName, ApplicationGlobals.application.info.sharedObjectPath); } catch(e:Error) { }; dataObject = (so) ? so.data : new Object(); } public function getValue(_arg1:String):Object{ return (dataObject[_arg1]); } public function flush(_arg1:int=0):String{ var status:String; var minDiskSpace = _arg1; try { status = so.flush(minDiskSpace); } catch(e:Error) { }; return (status); } public function get dataEmpty():Boolean{ var _local1:Boolean = ObjectUtil.hasProperties(dataObject); return (!(_local1)); } public function clear():void{ var _local1:String; for (_local1 in dataObject) { delete dataObject[_local1]; }; so.clear(); } public function setValue(_arg1:String, _arg2:Object):void{ dataObject[_arg1] = _arg2; } } }//package com.bigwigmedia.net
Section 154
//URLCaller_2DPlay (com.bigwigmedia.net.URLCaller_2DPlay) package com.bigwigmedia.net { import com.bigwigmedia.application.*; import com.bigwigmedia.core.*; import com.adobe.crypto.*; import flash.net.*; import flash.errors.*; public class URLCaller_2DPlay implements IURLCaller { private var applicationID:String; bigwigmedia_ns static var singletonAccessor:Boolean = false; public function URLCaller_2DPlay(){ if (!bigwigmedia_ns::singletonAccessor){ throw (new IllegalOperationError("Use method getInstance of Singleton class to get instance of URLCaller_2DPlay.")); }; applicationID = ApplicationGlobals.application.info.id; } public function submitScore(_arg1:Object):void{ var _local2:String = MD5.hash((((("gameid=" + applicationID) + "&hiscore=") + _arg1.toString()) + "2DPlay.com/")); var _local3:String = ((((("http://www.2DPlay.com/highscores.php?gameid=" + applicationID) + "&hiscore=") + _arg1.toString()) + "&hash=") + _local2); getURL(_local3); } public function viewScores():void{ getURL(("http://www.2Dplay.com/showscores.php?gameid=" + applicationID)); } public function getGame():void{ getURL("http://www.2DPlay.com/freecontent.htm"); } public function mainLink():void{ getURL(("http://www.2DPlay.com/index.php?gameid=" + applicationID)); } public function playMoreGames():void{ getURL(("http://www.2DPlay.com/index.php?gameid=" + applicationID)); } public function getURL(_arg1:String, _arg2:String="_blank"):void{ navigateToURL(new URLRequest(_arg1), _arg2); } public function downloadGame():void{ getURL(("http://www.2DPlay.com/downloadgame.php?gameid=" + applicationID)); } } }//package com.bigwigmedia.net
Section 155
//AbstractPreloader (com.bigwigmedia.preloaders.AbstractPreloader) package com.bigwigmedia.preloaders { import flash.display.*; public class AbstractPreloader extends Sprite { public function get percentLoaded():Number{ if (!root){ return (0); }; var _local1:uint = root.loaderInfo.bytesLoaded; var _local2:uint = root.loaderInfo.bytesTotal; if (_local2 == 0){ return (((_local1 > 0)) ? 1 : 0); }; return ((_local1 / _local2)); } } }//package com.bigwigmedia.preloaders
Section 156
//EmptyPreloader (com.bigwigmedia.preloaders.EmptyPreloader) package com.bigwigmedia.preloaders { import flash.events.*; import com.bigwigmedia.events.*; import flash.utils.*; public class EmptyPreloader extends AbstractPreloader { private var timer:Timer; public function EmptyPreloader(){ timer = new Timer(100); timer.addEventListener(TimerEvent.TIMER, onTimerEventHandler); timer.start(); } private function onTimerEventHandler(_arg1:TimerEvent):void{ if (percentLoaded == 1){ timer.stop(); timer.removeEventListener(TimerEvent.TIMER, onTimerEventHandler); timer = null; dispatchEvent(new PreloaderEvent(PreloaderEvent.COMPLETE, 1)); }; } } }//package com.bigwigmedia.preloaders
Section 157
//Preloader_2DPlay (com.bigwigmedia.preloaders.Preloader_2DPlay) package com.bigwigmedia.preloaders { import flash.display.*; import com.bigwigmedia.application.*; import flash.events.*; import com.bigwigmedia.events.*; import flash.utils.*; import flash.system.*; import flash.net.*; public class Preloader_2DPlay extends AbstractPreloader { private var ad:Sprite; private var adLoader:Loader; private var logoAnimationCompleted:Boolean;// = false private var timer:Timer; private var animation:MovieClip; private var barCompleted:Boolean;// = false public var _logo:MovieClip; private var progressBar:MovieClip; private var progressBarMask:MovieClip; public static const AD_WIDTH:Number = 400; public static const NOMINAL_WIDTH:Number = 468; public static const AD_HEIGHT:Number = 350; public static const NOMINAL_HEIGHT:Number = 117; public function Preloader_2DPlay(_arg1:Boolean=true){ var _local2:int; var _local3:int; logoAnimationCompleted = false; barCompleted = false; super(); _logo.visible = false; animation = _logo.animation; progressBar = _logo.progressBar; progressBarMask = progressBar.progressBarMask; animation.stop(); animation.mouseChildren = false; animation.buttonMode = true; animation.addEventListener(MouseEvent.CLICK, onLogoClickHandler); progressBar.alpha = 0; _local2 = ApplicationGlobals.application.nominalWidth; _local3 = ApplicationGlobals.application.nominalHeight; if (NOMINAL_WIDTH > _local2){ _logo.scaleX = (_logo.scaleY = ((_local2 * 0.9) / NOMINAL_WIDTH)); }; _logo.x = ((_local2 - _logo.width) / 2); _logo.y = ((_local3 - _logo.height) / 2); if (Security.sandboxType == Security.LOCAL_WITH_FILE){ trace("Movie sandbox type is LOCAL WITH FILE. It can't participate in BigWig Media ad network."); startLogoAnimation(); } else { if (_arg1){ loadAd(); } else { startLogoAnimation(); }; }; } private function onLogoClickHandler(_arg1:MouseEvent):void{ navigateToURL(new URLRequest(("http://www.2DPlay.com/index.php?gameid=" + ApplicationGlobals.application.info.id)), "_blank"); } private function onAdCompleteHandler(_arg1:Event):void{ completeAd(); } private function onTimerEventHandler(_arg1:TimerEvent):void{ var _local2:Number; _local2 = percentLoaded; progressBarMask.scaleX = _local2; if (!logoAnimationCompleted){ if (animation.currentFrame == animation.totalFrames){ logoAnimationCompleted = true; } else { animation.nextFrame(); }; } else { if (!barCompleted){ if (_local2 == 1){ barCompleted = true; } else { progressBar.alpha = (progressBar.alpha + 0.1); if (progressBar.alpha >= 1){ barCompleted = true; progressBar.alpha = 1; }; }; } else { if (_local2 == 1){ timer.stop(); timer.removeEventListener(TimerEvent.TIMER, onTimerEventHandler); timer = null; animation.removeEventListener(MouseEvent.CLICK, onLogoClickHandler); dispatchEvent(new PreloaderEvent(PreloaderEvent.COMPLETE, 1)); }; }; }; _arg1.updateAfterEvent(); } private function completeAd():void{ adLoader.contentLoaderInfo.removeEventListener(IOErrorEvent.IO_ERROR, onAdLoadErrorHandler); adLoader.contentLoaderInfo.sharedEvents.removeEventListener("BigwigInGameAdComplete", onAdCompleteHandler); try { adLoader.unload(); } catch(error:Error) { }; ad.removeChild(adLoader); adLoader = null; removeChild(ad); ad = null; startLogoAnimation(); } private function loadAd():void{ var applicationNominalWidth:int; var applicationNominalHeight:int; Security.allowDomain("adserver.bigwigmedia.com"); applicationNominalWidth = ApplicationGlobals.application.nominalWidth; applicationNominalHeight = ApplicationGlobals.application.nominalHeight; ad = new Sprite(); ad.graphics.lineStyle(); ad.graphics.beginFill(0xFFFFFF); ad.graphics.drawRect(0, 0, AD_WIDTH, AD_HEIGHT); ad.graphics.endFill(); if (AD_HEIGHT > applicationNominalHeight){ ad.scaleX = (ad.scaleY = ((applicationNominalHeight * 0.9) / AD_HEIGHT)); }; ad.x = ((applicationNominalWidth - ad.width) / 2); ad.y = ((applicationNominalHeight - ad.height) / 2); addChild(ad); adLoader = new Loader(); adLoader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, onAdLoadErrorHandler); adLoader.contentLoaderInfo.sharedEvents.addEventListener("BigwigInGameAdComplete", onAdCompleteHandler); ad.addChild(adLoader); try { adLoader.load(new URLRequest("http://adserver.bigwigmedia.com/ingamead3.swf")); } catch(error:Error) { trace("Resource http://adserver.bigwigmedia.com/ingamead3.swf is unavailable."); completeAd(); }; } private function onAdLoadErrorHandler(_arg1:IOErrorEvent):void{ completeAd(); } private function startLogoAnimation():void{ graphics.lineStyle(); graphics.beginFill(2045285, 1); graphics.drawRect(0, 0, ApplicationGlobals.application.nominalWidth, ApplicationGlobals.application.nominalHeight); graphics.endFill(); _logo.visible = true; timer = new Timer(33); timer.addEventListener(TimerEvent.TIMER, onTimerEventHandler); timer.start(); } } }//package com.bigwigmedia.preloaders
Section 158
//ISoundManager (com.bigwigmedia.sound.ISoundManager) package com.bigwigmedia.sound { public interface ISoundManager { function stopChannel(_arg1:String):void; function playSound(_arg1:String, _arg2:int=1):void; function unregisterSoundRecord(_arg1:String):void; function setSoundVolume(_arg1:String, _arg2:Number):void; function playNextSound(_arg1:String, _arg2:String, _arg3:int=1, _arg4:uint=25, _arg5:uint=25):void; function isSoundPlaying(_arg1:String):Boolean; function setChannelsVolume(_arg1:Number):void; function stopSound(_arg1:String):void; function setSoundPan(_arg1:String, _arg2:Number):void; function setChannelVolume(_arg1:String, _arg2:Number):void; function setChannelPan(_arg1:String, _arg2:Number):void; function registerSoundRecord(_arg1:String, _arg2:Class, _arg3:Array):void; function stopAll():void; } }//package com.bigwigmedia.sound
Section 159
//ReplayChannel (com.bigwigmedia.sound.ReplayChannel) package com.bigwigmedia.sound { public class ReplayChannel { private var _name:String; private var recordsHash:Object; private var _volume:Number;// = 1 private var _pan:Number;// = 0 public function ReplayChannel(_arg1:String){ recordsHash = new Object(); super(); _name = _arg1; } public function set pan(_arg1:Number):void{ var _local2:SoundRecord; _pan = _arg1; if (_pan < -1){ _pan = -1; } else { if (_pan > 1){ _pan = 1; }; }; for each (_local2 in recordsHash) { _local2.channelPan = _pan; }; } public function stop():void{ var _local1:SoundRecord; for each (_local1 in recordsHash) { _local1.stop(); }; } function set soundsVolume(_arg1:Number):void{ var _local2:SoundRecord; _volume = _arg1; if (_volume < 0){ _volume = 0; } else { if (_volume > 1){ _volume = 1; }; }; for each (_local2 in recordsHash) { _local2.volume = _volume; }; } public function get name():String{ return (_name); } public function registerSound(_arg1:String, _arg2:SoundRecord):void{ if (!recordsHash[_arg1]){ _arg2.channelVolume = _volume; _arg2.channelPan = _pan; recordsHash[_arg1] = _arg2; }; } public function unregisterSound(_arg1:String):void{ var _local2:SoundRecord = recordsHash[_arg1]; if (_local2){ _local2.dispose(); delete recordsHash[_arg1]; }; } public function set volume(_arg1:Number):void{ var _local2:SoundRecord; _volume = _arg1; if (_volume < 0){ _volume = 0; } else { if (_volume > 1){ _volume = 1; }; }; for each (_local2 in recordsHash) { _local2.channelVolume = _volume; }; } } }//package com.bigwigmedia.sound
Section 160
//SoundManager (com.bigwigmedia.sound.SoundManager) package com.bigwigmedia.sound { import com.boostworthy.events.*; import com.boostworthy.animation.sequence.tweens.*; import com.bigwigmedia.core.*; import com.boostworthy.animation.sequence.*; import com.boostworthy.animation.rendering.*; import flash.errors.*; public class SoundManager implements ISoundManager { private var timeline:Timeline; private var channelsHash:Object; private var transitionChannel:ReplayChannel; private var recordsHash:Object; bigwigmedia_ns static var singletonAccessor:Boolean = false; private static var replayChannelUID:int = 0; public function SoundManager(){ channelsHash = new Object(); recordsHash = new Object(); super(); if (!bigwigmedia_ns::singletonAccessor){ throw (new IllegalOperationError("Use method getInstance of Singleton class to get instance of SoundManager.")); }; } public function stopAll():void{ var _local1:SoundRecord; for each (_local1 in recordsHash) { _local1.stop(); }; } public function setSoundVolume(_arg1:String, _arg2:Number):void{ var _local3:SoundRecord = recordsHash[_arg1]; _local3.volume = _arg2; } public function playNextSound(_arg1:String, _arg2:String, _arg3:int=1, _arg4:uint=25, _arg5:uint=25):void{ if (timeline){ timeline.stop(); timeline.removeEventListener(AnimationEvent.FINISH, onTimelineFinishHandler); timeline.dispose(); timeline = null; } else { transitionChannel = channelsHash[_arg1]; if (transitionChannel){ timeline = new Timeline(RenderMethod.ENTER_FRAME); timeline.addTween(new Tween(this, "allSoundsVolume", 0, 1, (_arg4 + 1))); timeline.addTween(new Action(playSound, [_arg2, _arg3], null, [], (_arg4 + 1))); timeline.addTween(new Tween(this, "allSoundsVolume", 1, (_arg4 + 2), ((_arg4 + _arg5) + 3))); timeline.addEventListener(AnimationEvent.FINISH, onTimelineFinishHandler); timeline.play(); }; }; } public function playSound(_arg1:String, _arg2:int=1):void{ var _local3:SoundRecord = recordsHash[_arg1]; _local3.play(_arg2); } public function setChannelsVolume(_arg1:Number):void{ var _local2:ReplayChannel; for each (_local2 in channelsHash) { _local2.volume = _arg1; }; } public function setSoundPan(_arg1:String, _arg2:Number):void{ var _local3:SoundRecord = recordsHash[_arg1]; _local3.pan = _arg2; } public function setChannelVolume(_arg1:String, _arg2:Number):void{ var _local3:ReplayChannel = channelsHash[_arg1]; if (_local3){ _local3.volume = _arg2; }; } private function onTimelineFinishHandler(_arg1:AnimationEvent):void{ timeline.removeEventListener(AnimationEvent.FINISH, onTimelineFinishHandler); timeline.dispose(); timeline = null; } public function registerSoundRecord(_arg1:String, _arg2:Class, _arg3:Array):void{ var _local4:String; var _local5:SoundRecord; var _local6:String; var _local7:ReplayChannel; if (recordsHash[_arg1]){ throw (new ArgumentError((("SoundRecord with \"" + _arg1) + "\" identifier already exists."))); }; if (_arg3.length == 0){ _local4 = ("internal.replay_channel_" + String(replayChannelUID++)); registerSoundRecord(_arg1, _arg2, [_local4]); } else { _local5 = new SoundRecord(new (_arg2)); recordsHash[_arg1] = _local5; for each (_local6 in _arg3) { _local7 = channelsHash[_local6]; if (!_local7){ _local7 = new ReplayChannel(_local6); channelsHash[_local6] = _local7; }; _local7.registerSound(_arg1, _local5); }; }; } public function stopChannel(_arg1:String):void{ var _local2:ReplayChannel = channelsHash[_arg1]; if (_local2){ _local2.stop(); }; } public function setChannelPan(_arg1:String, _arg2:Number):void{ var _local3:ReplayChannel = channelsHash[_arg1]; if (_local3){ _local3.pan = _arg2; }; } public function unregisterSoundRecord(_arg1:String):void{ var _local2:ReplayChannel; for each (_local2 in channelsHash) { _local2.unregisterSound(_arg1); }; } public function isSoundPlaying(_arg1:String):Boolean{ var _local2:SoundRecord = recordsHash[_arg1]; return (_local2.playing); } public function stopSound(_arg1:String):void{ var _local2:SoundRecord = recordsHash[_arg1]; _local2.stop(); } public function set allSoundsVolume(_arg1:Number):void{ transitionChannel.soundsVolume = _arg1; } } }//package com.bigwigmedia.sound
Section 161
//SoundRecord (com.bigwigmedia.sound.SoundRecord) package com.bigwigmedia.sound { import flash.events.*; import flash.media.*; import com.bigwigmedia.core.*; public class SoundRecord implements IDisposable { private var _channelPan:Number;// = 0 private var _volume:Number;// = 1 private var sound:Sound; private var _pan:Number;// = 0 private var transform:SoundTransform; private var _playing:Boolean;// = false private var soundChannel:SoundChannel; private var _channelVolume:Number;// = 1 public function SoundRecord(_arg1:Sound){ transform = new SoundTransform(); super(); this.sound = _arg1; } public function set channelVolume(_arg1:Number):void{ _channelVolume = _arg1; setResultTransform(); } public function stop():void{ if (_playing){ soundChannel.stop(); soundChannel.removeEventListener(Event.SOUND_COMPLETE, onCompleteHandler); _playing = false; }; } public function set volume(_arg1:Number):void{ _volume = _arg1; if (_volume < 0){ _volume = 0; } else { if (_volume > 1){ _volume = 1; }; }; setResultTransform(); } public function play(_arg1:int):void{ stop(); soundChannel = sound.play(0, _arg1, transform); soundChannel.addEventListener(Event.SOUND_COMPLETE, onCompleteHandler); _playing = true; } private function setResultTransform():void{ var _local1:Number = (_pan + _channelPan); if (_local1 < -1){ _local1 = -1; } else { if (_local1 > 1){ _local1 = 1; }; }; transform.pan = _local1; transform.volume = (_volume * _channelVolume); if (_playing){ soundChannel.soundTransform = transform; }; } public function dispose():void{ soundChannel = null; sound = null; transform = null; } public function get playing():Boolean{ return (_playing); } private function onCompleteHandler(_arg1:Event):void{ soundChannel.removeEventListener(Event.SOUND_COMPLETE, onCompleteHandler); _playing = false; } public function set pan(_arg1:Number):void{ _pan = _arg1; if (_pan < -1){ _pan = -1; } else { if (_pan > 1){ _pan = 1; }; }; setResultTransform(); } public function set channelPan(_arg1:Number):void{ _channelPan = _arg1; setResultTransform(); } } }//package com.bigwigmedia.sound
Section 162
//HSMError (com.bigwigmedia.stateMachine.errors.HSMError) package com.bigwigmedia.stateMachine.errors { public class HSMError extends Error { public function HSMError(_arg1:String=""){ super(_arg1); } } }//package com.bigwigmedia.stateMachine.errors
Section 163
//HSMEvent (com.bigwigmedia.stateMachine.events.HSMEvent) package com.bigwigmedia.stateMachine.events { import com.bigwigmedia.stateMachine.*; import flash.events.*; public class HSMEvent extends Event { private var _state:AbstractState; private var _event:AbstractEvent; public static const START:String = "HSMEvent.start"; public static const EVENT_RECIEVE:String = "HSMEvent.eventRecieve"; public static const COMPLETE:String = "HSMEvent.complete"; public static const STATE_CHANGE:String = "HSMEvent.stateChange"; public function HSMEvent(_arg1:String, _arg2:AbstractState=null, _arg3:AbstractEvent=null){ super(_arg1); _state = _arg2; _event = _arg3; } public function get state():AbstractState{ return (_state); } public function get event():AbstractEvent{ return (_event); } override public function toString():String{ return (formatToString("HSMEvent", "type", "state", "event")); } override public function clone():Event{ return (new HSMEvent(type, _state, _event)); } } }//package com.bigwigmedia.stateMachine.events
Section 164
//StateEvent (com.bigwigmedia.stateMachine.events.StateEvent) package com.bigwigmedia.stateMachine.events { import flash.events.*; public class StateEvent extends Event { private var _data:Object; public static const ADDED_TRIGGER:String = "StateEvent.addedTrigger"; public static const DEACTIVATE:String = "StateEvent.deactivate"; public function StateEvent(_arg1:String, _arg2:Object=null){ super(_arg1); _data = _arg2; } public function get data():Object{ return (_data); } override public function clone():Event{ return (new StateEvent(type, _data)); } } }//package com.bigwigmedia.stateMachine.events
Section 165
//TriggerEvent (com.bigwigmedia.stateMachine.events.TriggerEvent) package com.bigwigmedia.stateMachine.events { import com.bigwigmedia.stateMachine.*; import flash.events.*; public class TriggerEvent extends Event { private var _raisedEvent:AbstractEvent; public static const TRIGGER:String = "TriggerEvent.trigger"; public function TriggerEvent(_arg1:String, _arg2:AbstractEvent){ super(_arg1); _raisedEvent = _arg2; } public function get raisedEvent():AbstractEvent{ return (_raisedEvent); } override public function clone():Event{ return (new TriggerEvent(type, _raisedEvent)); } } }//package com.bigwigmedia.stateMachine.events
Section 166
//AbstractEvent (com.bigwigmedia.stateMachine.AbstractEvent) package com.bigwigmedia.stateMachine { import com.bigwigmedia.utils.*; public class AbstractEvent { public function toString():String{ return (ObjectUtil.formatToString(this)); } } }//package com.bigwigmedia.stateMachine
Section 167
//AbstractState (com.bigwigmedia.stateMachine.AbstractState) package com.bigwigmedia.stateMachine { import com.bigwigmedia.stateMachine.events.*; import flash.events.*; import com.bigwigmedia.core.*; import com.bigwigmedia.stateMachine.errors.*; import com.bigwigmedia.utils.*; public class AbstractState extends EventDispatcher implements IUpdatable, IDisposable { private var _id:String; public var name:String; private var _parent:CompositeState; private var updatableTriggers:Array; private var _active:Boolean;// = false private var _owned:Boolean;// = false protected var transitionsList:Array; private static var idCount:int = 0; public function AbstractState(){ transitionsList = []; updatableTriggers = []; super(); _id = String(idCount++); name = ((NameUtil.getClassName(this) + "_") + _id); } function setParent(_arg1:CompositeState):void{ _parent = _arg1; } public function update():void{ var _local1:IUpdatable; for each (_local1 in updatableTriggers) { _local1.update(); }; } public function get id():String{ return (_id); } public function isAncestor(_arg1:AbstractState):Boolean{ var _local2:AbstractState = _parent; while (_local2) { if (_local2 == _arg1){ return (true); }; _local2 = _local2.parent; }; return (false); } function setOwned(_arg1:Boolean):void{ _owned = _arg1; } public function get parent():CompositeState{ return (_parent); } override public function toString():String{ return (ObjectUtil.formatToString(this, "name")); } public function addTransition(_arg1:AbstractState, _arg2:AbstractTrigger=null, _arg3:Function=null, _arg4:Function=null):void{ var _local6:Transition; _arg2 = ((_arg2) || (new NullTrigger())); var _local5:Transition = new Transition(this, _arg1, _arg2, _arg3, _arg4); for each (_local6 in transitionsList) { if (_local6.conflicts(_local5)){ throw (new HSMError("State can't have conflicting outgoing transitions.")); }; }; transitionsList.push(_local5); if ((_arg2 is IUpdatable)){ updatableTriggers.push(_arg2); }; dispatchEvent(new StateEvent(StateEvent.ADDED_TRIGGER, _arg2)); } public function getActiveTransition(_arg1:AbstractEvent):Transition{ var _local4:Transition; var _local2:int = transitionsList.length; var _local3:int; while (_local3 < _local2) { _local4 = transitionsList[_local3]; if (_local4.willFire(_arg1)){ return (_local4); }; _local3++; }; return (null); } public function dispose():void{ var _local1:Transition; deactivate(null); for each (_local1 in transitionsList) { _local1.dispose(); }; transitionsList = []; updatableTriggers = []; _parent = null; } public function getTransitionLevel(_arg1:AbstractState):String{ if (this == _arg1){ return (TransitionLevel.TO_SELF); }; if (this.parent == _arg1.parent){ return (TransitionLevel.TO_SIBLING); }; if (this.isAncestor(_arg1)){ return (TransitionLevel.TO_ANCESTOR); }; if (_arg1.isAncestor(this)){ return (TransitionLevel.TO_DESCENDANT); }; return (TransitionLevel.TO_IRRELATIVE); } public function activate(_arg1:AbstractEvent):void{ var _local2:Transition; _active = true; for each (_local2 in transitionsList) { _local2.trigger.activate(); }; } public function deactivate(_arg1:AbstractEvent):void{ var _local2:Transition; _active = false; for each (_local2 in transitionsList) { _local2.trigger.deactivate(); }; dispatchEvent(new StateEvent(StateEvent.DEACTIVATE)); } public function get owned():Boolean{ return (_owned); } } }//package com.bigwigmedia.stateMachine
Section 168
//AbstractTrigger (com.bigwigmedia.stateMachine.AbstractTrigger) package com.bigwigmedia.stateMachine { import flash.events.*; import com.bigwigmedia.core.*; public class AbstractTrigger extends EventDispatcher implements IDisposable { public function activate():void{ } public function deactivate():void{ } public function equals(_arg1:AbstractTrigger):Boolean{ throw (new Error("Method must be overriden in subclass.")); } public function willFire(_arg1:AbstractEvent):Boolean{ throw (new Error("Method must be overriden in subclass.")); } public function dispose():void{ } } }//package com.bigwigmedia.stateMachine
Section 169
//ChoiceState (com.bigwigmedia.stateMachine.ChoiceState) package com.bigwigmedia.stateMachine { import com.bigwigmedia.stateMachine.errors.*; public class ChoiceState extends AbstractState { override public function addTransition(_arg1:AbstractState, _arg2:AbstractTrigger=null, _arg3:Function=null, _arg4:Function=null):void{ if (((_arg2) && (!((_arg2 is NullTrigger))))){ throw (new HSMError("Transition from ChoiceState may not have a trigger.")); }; super.addTransition(_arg1, _arg2, _arg3, _arg4); } } }//package com.bigwigmedia.stateMachine
Section 170
//CompositeState (com.bigwigmedia.stateMachine.CompositeState) package com.bigwigmedia.stateMachine { import com.bigwigmedia.stateMachine.events.*; import com.bigwigmedia.stateMachine.errors.*; public class CompositeState extends SimpleState { private var substatesList:Array; private var _initialState:InitialState; private var _lastActiveState:AbstractState; private var hasHistoryState:Boolean;// = false public function CompositeState(_arg1:Function=null, _arg2:Function=null, _arg3:Function=null){ substatesList = []; super(_arg1, _arg2, _arg3); } private function onStateDeactivateHandler(_arg1:StateEvent):void{ if (hasHistoryState){ _lastActiveState = (_arg1.target as AbstractState); }; } public function get initial():InitialState{ return (_initialState); } public function addState(_arg1:AbstractState):AbstractState{ if (_arg1.owned){ throw (new HSMError("State can't be added twice.")); }; if ((_arg1 is InitialState)){ if (_initialState){ throw (new HSMError("CompositeState can have at most one InitialState.")); }; _initialState = (_arg1 as InitialState); } else { if ((_arg1 is HistoryState)){ if (hasHistoryState){ throw (new HSMError("CompositeState can have at most one HistoryState.")); }; hasHistoryState = true; }; }; _arg1.addEventListener(StateEvent.ADDED_TRIGGER, onAddedTriggerHandler); _arg1.addEventListener(StateEvent.DEACTIVATE, onStateDeactivateHandler); substatesList.push(_arg1); _arg1.setParent(this); _arg1.setOwned(true); return (_arg1); } private function onAddedTriggerHandler(_arg1:StateEvent):void{ dispatchEvent(_arg1.clone()); } public function get history():AbstractState{ return (((_lastActiveState) || (_initialState))); } override public function dispose():void{ var _local1:AbstractState; for each (_local1 in substatesList) { _local1.removeEventListener(StateEvent.DEACTIVATE, onStateDeactivateHandler); _local1.removeEventListener(StateEvent.ADDED_TRIGGER, onAddedTriggerHandler); _local1.dispose(); }; substatesList = []; _initialState = null; _lastActiveState = null; super.dispose(); } } }//package com.bigwigmedia.stateMachine
Section 171
//FinalState (com.bigwigmedia.stateMachine.FinalState) package com.bigwigmedia.stateMachine { import com.bigwigmedia.stateMachine.errors.*; public class FinalState extends SimpleState { override public function addTransition(_arg1:AbstractState, _arg2:AbstractTrigger=null, _arg3:Function=null, _arg4:Function=null):void{ throw (new HSMError("FinalState can't have any outgoing transitions.")); } } }//package com.bigwigmedia.stateMachine
Section 172
//HistoryState (com.bigwigmedia.stateMachine.HistoryState) package com.bigwigmedia.stateMachine { import com.bigwigmedia.stateMachine.errors.*; public class HistoryState extends AbstractState { override public function addTransition(_arg1:AbstractState, _arg2:AbstractTrigger=null, _arg3:Function=null, _arg4:Function=null):void{ if (transitionsList.length == 1){ throw (new HSMError("HistoryState can have at most one outgoing transition.")); }; if (((_arg2) && (!((_arg2 is NullTrigger))))){ throw (new HSMError("Transition from HistoryState may not have a trigger.")); }; super.addTransition(_arg1, _arg2, _arg3, _arg4); } } }//package com.bigwigmedia.stateMachine
Section 173
//HSM (com.bigwigmedia.stateMachine.HSM) package com.bigwigmedia.stateMachine { import com.bigwigmedia.stateMachine.events.*; import flash.events.*; import com.bigwigmedia.stateMachine.errors.*; public class HSM extends EventDispatcher implements IStateMachine { private var statesList:Array; private var started:Boolean;// = false private var currentState:AbstractState; private var inTransition:Boolean;// = false private var activeStates:Array; private var initialState:InitialState; private var eventsQueue:Array; private var routesHash:Object; public function HSM(){ activeStates = []; statesList = []; eventsQueue = []; routesHash = {}; super(); } public function update():void{ var _local1:int = activeStates.length; var _local2:int; while (_local2 < _local1) { activeStates[_local2].update(); _local2++; }; } private function doTransition(_arg1:Transition, _arg2:AbstractEvent=null):void{ if (inTransition){ eventsQueue.push(_arg2); return; }; inTransition = true; var _local3:AbstractState = _arg1.target; if ((_local3 is CompositeState)){ _local3 = ((CompositeState(_local3).initial) || (_local3)); } else { if ((_local3 is HistoryState)){ _local3 = _local3.parent.history; }; }; var _local4:Array = getExitRoute(currentState, _local3); var _local5:Array = getEntryRoute(currentState, _local3); activeStates = getStack(_local5[(_local5.length - 1)]); currentState = activeStates[0]; var _local6:int = _local4.length; var _local7:int; while (_local7 < _local6) { _local4[_local7].deactivate(_arg2); _local7++; }; _arg1.invokeEffect(_arg2); var _local8:int = _local5.length; var _local9:int; while (_local9 < _local8) { _local5[_local9].activate(_arg2); _local9++; }; inTransition = false; dispatchEvent(new HSMEvent(HSMEvent.STATE_CHANGE, currentState, _arg2)); if ((((currentState is FinalState)) && (!(currentState.parent)))){ dispatchEvent(new HSMEvent(HSMEvent.COMPLETE, currentState, _arg2)); }; sendEvent(new NullEvent()); if (eventsQueue.length > 0){ sendEvent(eventsQueue.shift()); }; } private function getExitRoute(_arg1:AbstractState, _arg2:AbstractState):Array{ var _local5:AbstractState; if (!_arg1){ return ([]); }; var _local3:String = ((_arg1.id + "<-") + _arg2.id); var _local4:Array = routesHash[_local3]; if (_local4){ return (_local4); }; _local4 = []; var _local6:String = _arg1.getTransitionLevel(_arg2); switch (_local6){ case TransitionLevel.TO_SELF: case TransitionLevel.TO_SIBLING: _local4.push(_arg1); break; case TransitionLevel.TO_ANCESTOR: _local5 = _arg1; while (_local5 != _arg2) { _local4.push(_local5); _local5 = _local5.parent; }; break; case TransitionLevel.TO_DESCENDANT: break; case TransitionLevel.TO_IRRELATIVE: _local5 = _arg1; while (true) { _local4.push(_local5); if (((!(_local5.parent)) || ((_local5.parent == _arg2.parent)))){ break; }; _local5 = _local5.parent; }; break; }; routesHash[_local3] = _local4; return (_local4); } private function hasState(_arg1:AbstractState):Boolean{ var _local2:int = statesList.indexOf(_arg1); return (!((_local2 == -1))); } private function getStack(_arg1:AbstractState):Array{ var _local2:String = _arg1.id; var _local3:Array = routesHash[_local2]; if (_local3){ return (_local3); }; var _local4:AbstractState = _arg1; _local3 = [_local4]; while (_local4.parent) { _local3.push(_local4.parent); _local4 = _local4.parent; }; routesHash[_local2] = _local3; return (_local3); } public function addState(_arg1:AbstractState):AbstractState{ if (_arg1.owned){ throw (new HSMError("State can't be added twice.")); }; if ((_arg1 is InitialState)){ if (initialState){ throw (new HSMError("State machine can have at most one InitialState.")); }; initialState = (_arg1 as InitialState); } else { if ((_arg1 is HistoryState)){ throw (new HSMError("State machine can't have any HistoryState.")); }; }; _arg1.addEventListener(StateEvent.ADDED_TRIGGER, onAddedTriggerHandler); statesList.push(_arg1); _arg1.setOwned(true); return (_arg1); } public function sendSignal(_arg1:SignalEvent):void{ sendEvent(_arg1); } public function dispose():void{ var _local1:AbstractState; routesHash = {}; for each (_local1 in statesList) { _local1.removeEventListener(StateEvent.ADDED_TRIGGER, onAddedTriggerHandler); _local1.dispose(); }; statesList = []; initialState = null; currentState = null; } public function start(_arg1:AbstractState=null):void{ if (started){ return; }; var _local2:AbstractState = ((_arg1) || (initialState)); if (!hasState(_local2)){ throw (new HSMError("InitialState doesn't exist or is not immediate state of state machine.")); }; started = true; dispatchEvent(new HSMEvent(HSMEvent.START)); var _local3:Transition = new Transition(null, _local2, null, null, null); doTransition(_local3, new SignalEvent(SignalEvent.START)); } private function onTriggerHandler(_arg1:TriggerEvent):void{ sendEvent(_arg1.raisedEvent); } private function sendEvent(_arg1:AbstractEvent):void{ var _local4:Transition; if (!started){ throw (new HSMError("State machine is not started.")); }; dispatchEvent(new HSMEvent(HSMEvent.EVENT_RECIEVE, currentState, _arg1)); if ((((currentState is FinalState)) && (!(currentState.parent)))){ return; }; var _local2:int = activeStates.length; var _local3:int; while (_local3 < _local2) { _local4 = activeStates[_local3].getActiveTransition(_arg1); if (_local4){ doTransition(_local4, _arg1); break; }; _local3++; }; } private function onAddedTriggerHandler(_arg1:StateEvent):void{ var _local2:AbstractTrigger = (_arg1.data as AbstractTrigger); _local2.addEventListener(TriggerEvent.TRIGGER, onTriggerHandler); } private function getEntryRoute(_arg1:AbstractState, _arg2:AbstractState):Array{ var _local5:AbstractState; var _local7:Array; if (!_arg1){ _local7 = getStack(_arg2).slice(); _local7.reverse(); return (_local7); }; var _local3:String = ((_arg1.id + "->") + _arg2.id); var _local4:Array = routesHash[_local3]; if (_local4){ return (_local4); }; _local4 = []; var _local6:String = _arg1.getTransitionLevel(_arg2); switch (_local6){ case TransitionLevel.TO_SELF: case TransitionLevel.TO_SIBLING: _local4.push(_arg2); break; case TransitionLevel.TO_ANCESTOR: _local5 = _arg1.parent; while (true) { _local4.push(_local5); if (_local5 == _arg2){ break; }; _local5 = _local5.parent; }; break; case TransitionLevel.TO_IRRELATIVE: _local5 = _arg2; while (true) { _local4.push(_local5); if (((!(_local5.parent)) || ((_local5.parent == _arg1.parent)))){ break; }; _local5 = _local5.parent; }; _local4.reverse(); break; case TransitionLevel.TO_DESCENDANT: _local4 = getStack(_arg2).slice(); _local4 = _local4.splice(0, _local4.indexOf(_arg1)); _local4.reverse(); break; }; routesHash[_local3] = _local4; return (_local4); } } }//package com.bigwigmedia.stateMachine
Section 174
//InitialState (com.bigwigmedia.stateMachine.InitialState) package com.bigwigmedia.stateMachine { import com.bigwigmedia.stateMachine.errors.*; public class InitialState extends AbstractState { override public function addTransition(_arg1:AbstractState, _arg2:AbstractTrigger=null, _arg3:Function=null, _arg4:Function=null):void{ if (transitionsList.length == 1){ throw (new HSMError("InitialState can have at most one outgoing transition.")); }; if (((_arg2) && (!((_arg2 is NullTrigger))))){ throw (new HSMError("Transition from InitialState may not have a trigger.")); }; super.addTransition(_arg1, _arg2, _arg3, _arg4); } } }//package com.bigwigmedia.stateMachine
Section 175
//IStateMachine (com.bigwigmedia.stateMachine.IStateMachine) package com.bigwigmedia.stateMachine { import flash.events.*; import com.bigwigmedia.core.*; public interface IStateMachine extends IEventDispatcher, IUpdatable, IDisposable { function addState(_arg1:AbstractState):AbstractState; function start(_arg1:AbstractState=null):void; function sendSignal(_arg1:SignalEvent):void; } }//package com.bigwigmedia.stateMachine
Section 176
//NullEvent (com.bigwigmedia.stateMachine.NullEvent) package com.bigwigmedia.stateMachine { public class NullEvent extends AbstractEvent { } }//package com.bigwigmedia.stateMachine
Section 177
//NullTrigger (com.bigwigmedia.stateMachine.NullTrigger) package com.bigwigmedia.stateMachine { public class NullTrigger extends AbstractTrigger { override public function willFire(_arg1:AbstractEvent):Boolean{ return ((_arg1 is NullEvent)); } override public function equals(_arg1:AbstractTrigger):Boolean{ return ((_arg1 is NullTrigger)); } } }//package com.bigwigmedia.stateMachine
Section 178
//SignalEvent (com.bigwigmedia.stateMachine.SignalEvent) package com.bigwigmedia.stateMachine { import com.bigwigmedia.utils.*; public class SignalEvent extends AbstractEvent { protected var _type:String; protected var _data:Object; public static const START:String = "SignalEvent.start"; public function SignalEvent(_arg1:String, _arg2:Object=null){ _type = _arg1; _data = _arg2; } public function get data():Object{ return (_data); } public function get type():String{ return (_type); } override public function toString():String{ return (ObjectUtil.formatToString(this, "type", "data")); } } }//package com.bigwigmedia.stateMachine
Section 179
//SignalTrigger (com.bigwigmedia.stateMachine.SignalTrigger) package com.bigwigmedia.stateMachine { public class SignalTrigger extends AbstractTrigger { private var _type:String; public function SignalTrigger(_arg1:String){ _type = _arg1; } override public function willFire(_arg1:AbstractEvent):Boolean{ var _local2:SignalEvent = (_arg1 as SignalEvent); return (((_local2) && ((_local2.type == _type)))); } public function get type():String{ return (_type); } override public function equals(_arg1:AbstractTrigger):Boolean{ var _local2:SignalTrigger = (_arg1 as SignalTrigger); return (((_local2) && ((_local2.type == _type)))); } } }//package com.bigwigmedia.stateMachine
Section 180
//SimpleState (com.bigwigmedia.stateMachine.SimpleState) package com.bigwigmedia.stateMachine { public class SimpleState extends AbstractState { protected var _entry:Function;// = null protected var _doActivity:Function;// = null protected var _exit:Function;// = null public function SimpleState(_arg1:Function=null, _arg2:Function=null, _arg3:Function=null){ _entry = _arg1; _doActivity = _arg2; _exit = _arg3; } override public function update():void{ super.update(); if (_doActivity != null){ _doActivity(); }; } override public function deactivate(_arg1:AbstractEvent):void{ if (_exit != null){ _exit(_arg1); }; super.deactivate(_arg1); } override public function activate(_arg1:AbstractEvent):void{ super.activate(_arg1); if (_entry != null){ _entry(_arg1); }; } override public function dispose():void{ _entry = null; _doActivity = null; _exit = null; super.dispose(); } } }//package com.bigwigmedia.stateMachine
Section 181
//TimeEvent (com.bigwigmedia.stateMachine.TimeEvent) package com.bigwigmedia.stateMachine { import com.bigwigmedia.utils.*; public class TimeEvent extends AbstractEvent { private var _delay:Number; public function TimeEvent(_arg1:Number){ _delay = _arg1; } public function get delay():Number{ return (_delay); } override public function toString():String{ return (ObjectUtil.formatToString(this, "delay")); } } }//package com.bigwigmedia.stateMachine
Section 182
//TimeTrigger (com.bigwigmedia.stateMachine.TimeTrigger) package com.bigwigmedia.stateMachine { import com.bigwigmedia.stateMachine.events.*; import flash.events.*; import flash.utils.*; public class TimeTrigger extends AbstractTrigger { private var _delay:Number; private var timer:Timer; public function TimeTrigger(_arg1:Number){ _delay = _arg1; timer = new Timer(_delay, 1); timer.addEventListener(TimerEvent.TIMER_COMPLETE, onTimerCompleteHandler); } public function get delay():Number{ return (_delay); } private function onTimerCompleteHandler(_arg1:TimerEvent):void{ dispatchEvent(new TriggerEvent(TriggerEvent.TRIGGER, new TimeEvent(_delay))); } override public function dispose():void{ timer.stop(); timer.removeEventListener(TimerEvent.TIMER_COMPLETE, onTimerCompleteHandler); timer = null; } override public function willFire(_arg1:AbstractEvent):Boolean{ var _local2:TimeEvent = (_arg1 as TimeEvent); return (((_local2) && ((_local2.delay == _delay)))); } override public function activate():void{ timer.start(); } override public function deactivate():void{ timer.reset(); } override public function equals(_arg1:AbstractTrigger):Boolean{ var _local2:TimeTrigger = (_arg1 as TimeTrigger); return (((_local2) && ((_local2.delay == _delay)))); } } }//package com.bigwigmedia.stateMachine
Section 183
//Transition (com.bigwigmedia.stateMachine.Transition) package com.bigwigmedia.stateMachine { import com.bigwigmedia.core.*; import com.bigwigmedia.utils.*; public class Transition implements IDisposable { private var _guard:Function; private var _target:AbstractState; private var _effect:Function; private var _trigger:AbstractTrigger; private var _source:AbstractState; public function Transition(_arg1:AbstractState, _arg2:AbstractState, _arg3:AbstractTrigger, _arg4:Function, _arg5:Function){ _source = _arg1; _target = _arg2; _trigger = _arg3; _effect = _arg4; _guard = _arg5; } public function conflicts(_arg1:Transition):Boolean{ return ((((((_source == _arg1.source)) && (_trigger.equals(_arg1.trigger)))) && ((_guard == _arg1.guard)))); } public function get source():AbstractState{ return (_source); } public function get guard():Function{ return (_guard); } public function willFire(_arg1:AbstractEvent):Boolean{ if ((((guard == null)) || (_guard()))){ return (_trigger.willFire(_arg1)); }; return (false); } public function invokeEffect(_arg1:AbstractEvent):void{ if (_effect != null){ _effect(_arg1); }; } public function get target():AbstractState{ return (_target); } public function get trigger():AbstractTrigger{ return (_trigger); } public function toString():String{ return (ObjectUtil.formatToString(this, "source", "target", "trigger")); } public function dispose():void{ _source = null; _target = null; _trigger.dispose(); _trigger = null; _effect = null; _guard = null; } } }//package com.bigwigmedia.stateMachine
Section 184
//TransitionLevel (com.bigwigmedia.stateMachine.TransitionLevel) package com.bigwigmedia.stateMachine { public class TransitionLevel { public static const TO_SELF:String = "toSelf"; public static const TO_DESCENDANT:String = "toDescendant"; public static const TO_ANCESTOR:String = "toAncestor"; public static const TO_IRRELATIVE:String = "toIrrelative"; public static const TO_SIBLING:String = "toSibling"; } }//package com.bigwigmedia.stateMachine
Section 185
//AbstractBox (com.bigwigmedia.ui.containers.AbstractBox) package com.bigwigmedia.ui.containers { public class AbstractBox extends LayoutContainer { protected var _gap:Number;// = 0 public function set gap(_arg1:Number):void{ _gap = _arg1; invalidateLayout(); invalidateSize(); } public function get gap():Number{ return (_gap); } } }//package com.bigwigmedia.ui.containers
Section 186
//Constraint (com.bigwigmedia.ui.containers.Constraint) package com.bigwigmedia.ui.containers { import flash.display.*; import com.bigwigmedia.ui.*; import flash.geom.*; public class Constraint { private var _bottom:Number;// = NAN private var _percentHeight:Number;// = NAN private var _isPositionConstraint:Boolean;// = false private var _verticalCenter:Number;// = NAN private var _top:Number;// = NAN private var _right:Number;// = NAN private var _percentWidth:Number;// = NAN private var _left:Number;// = NAN private var _isSizeConstraint:Boolean;// = false private var _horizontalCenter:Number;// = NAN public static const PERCENTAGE_WIDTH:String = "percentWidth"; public static const LEFT:String = "left"; public static const BOTTOM:String = "bottom"; public static const PERCENTAGE_HEIGHT:String = "percentHeight"; public static const HORIZONTAL_CENTER:String = "horizontalCenter"; public static const TOP:String = "top"; public static const RIGHT:String = "right"; public static const VERTICAL_CENTER:String = "verticalCenter"; public function Constraint(_arg1:Object){ var _local2:String; super(); if (_arg1){ for (_local2 in _arg1) { if ((_local2 in this)){ this[_local2] = _arg1[_local2]; }; }; }; } public function get percentWidth():Number{ return (_percentWidth); } public function set percentWidth(_arg1:Number):void{ _percentWidth = _arg1; _isSizeConstraint = true; } public function get verticalCenter():Number{ return (_verticalCenter); } public function get left():Number{ return (_left); } public function get isSizeConstraint():Boolean{ return (_isSizeConstraint); } public function get percentHeight():Number{ return (_percentHeight); } public function set left(_arg1:Number):void{ _left = _arg1; _isPositionConstraint = true; if (!isNaN(_right)){ _isSizeConstraint = true; }; } public function set percentHeight(_arg1:Number):void{ _percentHeight = _arg1; _isSizeConstraint = true; } public function get horizontalCenter():Number{ return (_horizontalCenter); } public function get right():Number{ return (_right); } public function get top():Number{ return (_top); } public function set bottom(_arg1:Number):void{ _bottom = _arg1; _isPositionConstraint = true; if (!isNaN(_top)){ _isSizeConstraint = true; }; } public function set top(_arg1:Number):void{ _top = _arg1; _isPositionConstraint = true; if (!isNaN(_bottom)){ _isSizeConstraint = true; }; } public function get bottom():Number{ return (_bottom); } public function apply(_arg1:DisplayObject):void{ var _local8:Number; var _local9:Number; var _local2:DisplayObject = _arg1.parent; if (!_local2){ return; }; var _local3:AbstractComponent = (_arg1 as AbstractComponent); var _local4:LayoutContainer = (_arg1 as LayoutContainer); if (((_isSizeConstraint) && (((!(_local4)) || (!(_local4.autoSize)))))){ _local8 = (isNaN(percentWidth)) ? _arg1.width : ((_local2.width * percentWidth) / 100); _local9 = (isNaN(percentHeight)) ? _arg1.height : ((_local2.height * percentHeight) / 100); if (((!(isNaN(left))) && (!(isNaN(right))))){ _local8 = ((_local2.width - left) - right); }; if (((!(isNaN(top))) && (!(isNaN(bottom))))){ _local9 = ((_local2.height - top) - bottom); }; _arg1.width = _local8; _arg1.height = _local9; }; if (!_isPositionConstraint){ return; }; var _local5:Rectangle = (_local3) ? _local3.getComponentRect() : _arg1.getRect(_arg1.parent); var _local6:Number = 0; if (!isNaN(left)){ _local6 = (left - _local5.left); } else { if (!isNaN(right)){ _local6 = ((_local2.width - _local5.right) - right); } else { if (!isNaN(horizontalCenter)){ _local6 = (((_local2.width / 2) - (_local5.left + (_local5.width / 2))) + horizontalCenter); }; }; }; if (_local6 != 0){ _arg1.x = (_arg1.x + _local6); }; var _local7:Number = 0; if (!isNaN(top)){ _local7 = (top - _local5.top); } else { if (!isNaN(bottom)){ _local7 = ((_local2.height - _local5.bottom) - bottom); } else { if (!isNaN(verticalCenter)){ _local7 = (((_local2.height / 2) - (_local5.top + (_local5.height / 2))) + verticalCenter); }; }; }; if (_local7 != 0){ _arg1.y = (_arg1.y + _local7); }; } public function set horizontalCenter(_arg1:Number):void{ _horizontalCenter = _arg1; _isPositionConstraint = true; } public function get isPositionConstraint():Boolean{ return (_isPositionConstraint); } public function set verticalCenter(_arg1:Number):void{ _verticalCenter = _arg1; _isPositionConstraint = true; } public function set right(_arg1:Number):void{ _right = _arg1; _isPositionConstraint = true; if (!isNaN(_left)){ _isSizeConstraint = true; }; } } }//package com.bigwigmedia.ui.containers
Section 187
//HBox (com.bigwigmedia.ui.containers.HBox) package com.bigwigmedia.ui.containers { import flash.display.*; public class HBox extends AbstractBox { override protected function drawLayout():void{ var _local4:DisplayObject; var _local5:Constraint; if (_autoSize){ this.height = maxChildHeight; }; var _local1:Number = 0; var _local2:int = _layoutChildren.length; var _local3:int; while (_local3 < _local2) { _local4 = _layoutChildren[_local3]; _local5 = _childToConstraintDict[_local4]; if (_local5){ _local5.apply(_local4); }; _local4.x = _local1; if (_local3 < (_local2 - 1)){ _local1 = (_local1 + (_local4.width + _gap)); } else { _local1 = (_local1 + _local4.width); }; _local3++; }; this.width = _local1; } } }//package com.bigwigmedia.ui.containers
Section 188
//LayoutContainer (com.bigwigmedia.ui.containers.LayoutContainer) package com.bigwigmedia.ui.containers { import flash.display.*; import com.bigwigmedia.ui.*; import com.bigwigmedia.events.*; import flash.utils.*; public class LayoutContainer extends AbstractContainer { private var invalidatingLayout:Boolean;// = false protected var _childToConstraintDict:Dictionary; private var invalidateLayoutFlag:Boolean;// = false protected var _layoutChildren:Array; protected var _autoSize:Boolean;// = false public function LayoutContainer(){ _layoutChildren = []; _childToConstraintDict = new Dictionary(); super(); } override public function setSize(_arg1:Number, _arg2:Number):void{ var _local3:Number = Math.round(_arg1); var _local4:Number = Math.round(_arg2); if (_local3 < _minWidth){ _local3 = _minWidth; } else { if (_local3 > _maxWidth){ _local3 = _maxWidth; }; }; if (_local4 < _minHeight){ _local4 = _minHeight; } else { if (_local4 > _maxHeight){ _local4 = _maxHeight; }; }; var _local5:Boolean; if (_explicitWidth != _local3){ _explicitWidth = _local3; _local5 = true; }; if (_explicitHeight != _local4){ _explicitHeight = _local4; _local5 = true; }; if (_local5){ invalidateLayout(); invalidateSize(); }; } protected function invalidateLayout():void{ invalidateLayoutFlag = true; callLater(); } override protected function componentAdded(_arg1:AbstractComponent):void{ invalidateLayout(); } protected function get maxChildWidth():Number{ var _local2:DisplayObject; var _local1:Number = 0; for each (_local2 in _layoutChildren) { if (_local2.width > _local1){ _local1 = _local2.width; }; }; return (_local1); } override protected function draw():void{ if (invalidatingLayout){ return; }; invalidatingLayout = true; if (invalidateLayoutFlag){ drawLayout(); }; super.draw(); invalidatingLayout = false; } protected function drawLayout():void{ var _local1:DisplayObject; var _local2:Constraint; if (_autoSize){ this.width = maxChildWidth; this.height = maxChildHeight; }; for each (_local1 in _layoutChildren) { _local2 = _childToConstraintDict[_local1]; if (_local2){ _local2.apply(_local1); }; }; } public function get autoSize():Boolean{ return (_autoSize); } private function onComponentEventHandler(_arg1:ComponentEvent):void{ if (_layoutChildren.indexOf(_arg1.target) != -1){ invalidateLayout(); }; } protected function get maxChildHeight():Number{ var _local2:DisplayObject; var _local1:Number = 0; for each (_local2 in _layoutChildren) { if (_local2.height > _local1){ _local1 = _local2.height; }; }; return (_local1); } public function addChildToLayout(_arg1:DisplayObject, _arg2:Object=null):DisplayObject{ return (addChildToLayoutAt(_arg1, numChildren, _arg2)); } override protected function componentRemoved(_arg1:AbstractComponent):void{ delete _childToConstraintDict[_arg1]; var _local2:int = _layoutChildren.indexOf(_arg1); if (_local2 != -1){ _layoutChildren.splice(_local2, 1); _arg1.removeEventListener(ComponentEvent.RESIZE, onComponentEventHandler); _arg1.removeEventListener(ComponentEvent.MOVE, onComponentEventHandler); }; invalidateLayout(); } override protected function validate():void{ invalidateLayoutFlag = false; super.validate(); } override public function dispose():void{ var _local1:DisplayObject; for each (_local1 in _layoutChildren) { _local1.removeEventListener(ComponentEvent.RESIZE, onComponentEventHandler); _local1.removeEventListener(ComponentEvent.MOVE, onComponentEventHandler); }; _childToConstraintDict = new Dictionary(); _layoutChildren = []; super.dispose(); } public function set autoSize(_arg1:Boolean):void{ _autoSize = _arg1; invalidateLayout(); invalidateSize(); } public function addChildToLayoutAt(_arg1:DisplayObject, _arg2:int, _arg3:Object=null):DisplayObject{ var _local4:Constraint = new Constraint(_arg3); if (((_local4.isPositionConstraint) || (_local4.isSizeConstraint))){ _childToConstraintDict[_arg1] = _local4; }; _arg1.addEventListener(ComponentEvent.RESIZE, onComponentEventHandler); _arg1.addEventListener(ComponentEvent.MOVE, onComponentEventHandler); _layoutChildren.push(_arg1); return (addChildAt(_arg1, _arg2)); } } }//package com.bigwigmedia.ui.containers
Section 189
//AbstractButtonStyle (com.bigwigmedia.ui.styles.AbstractButtonStyle) package com.bigwigmedia.ui.styles { public class AbstractButtonStyle { public static const MOUSE_CLICK_HANDLER:String = "mouseClickHandler"; public static const ROLL_OVER_HANDLER:String = "rollOverHandler"; public static const ROLL_OUT_HANDLER:String = "rollOutHandler"; public static const MOUSE_DOWN_HANDLER:String = "mouseDownHandler"; } }//package com.bigwigmedia.ui.styles
Section 190
//AbstractComponentStyle (com.bigwigmedia.ui.styles.AbstractComponentStyle) package com.bigwigmedia.ui.styles { public class AbstractComponentStyle { public static const DECORATION:String = "decoration"; public static const STYLE_SHEET:String = "styleSheet"; public static const DISABLED_DECORATION:String = "disabledDecoration"; public static const TEXT_FORMAT:String = "textFormat"; public static const EMBED_FONTS:String = "embedFonts"; } }//package com.bigwigmedia.ui.styles
Section 191
//IconicButtonStyle (com.bigwigmedia.ui.styles.IconicButtonStyle) package com.bigwigmedia.ui.styles { public class IconicButtonStyle { public static const UP_DECORATION:String = "upDecoration"; public static const OVER_DECORATION:String = "overDecoration"; public static const DOWN_DECORATION:String = "downDecoration"; } }//package com.bigwigmedia.ui.styles
Section 192
//LabelButtonStyle (com.bigwigmedia.ui.styles.LabelButtonStyle) package com.bigwigmedia.ui.styles { public class LabelButtonStyle { public static const UP_STATE_COLOR:String = "upStateColor"; public static const DOWN_STATE_COLOR:String = "downStateColor"; public static const OVER_STATE_COLOR:String = "overStateColor"; } }//package com.bigwigmedia.ui.styles
Section 193
//AbstractButton (com.bigwigmedia.ui.AbstractButton) package com.bigwigmedia.ui { import flash.display.*; import flash.events.*; import com.bigwigmedia.events.*; import com.bigwigmedia.effects.*; import flash.utils.*; import com.bigwigmedia.ui.styles.*; public class AbstractButton extends AbstractComponent { protected var _selected:Boolean;// = false private var pressTimer:Timer; protected var _autoRepeat:Boolean;// = false protected var _state:String;// = "up" private var _beacon:IBeacon; protected var _toggle:Boolean;// = false public static const REPEAT_INTERVAL:Number = 50; public static const REPEAT_DELAY:Number = 500; public function AbstractButton(){ pressTimer = new Timer(1, 0); pressTimer.addEventListener(TimerEvent.TIMER, onPressTimerHandler); buttonMode = true; mouseChildren = false; addEventListener(MouseEvent.MOUSE_UP, onMouseEventHandler, false, EventPriority.HIGH); addEventListener(MouseEvent.MOUSE_DOWN, onMouseEventHandler, false, EventPriority.HIGH); addEventListener(MouseEvent.ROLL_OVER, onMouseEventHandler, false, EventPriority.HIGH); addEventListener(MouseEvent.ROLL_OUT, onMouseEventHandler, false, EventPriority.HIGH); addEventListener(MouseEvent.CLICK, onMouseEventHandler, false, EventPriority.HIGH); } public function set beacon(_arg1:IBeacon):void{ if (_arg1 === null){ if (_beacon){ _beacon.dispose(); _beacon = null; }; } else { _beacon = _arg1; _beacon.apply(beaconTarget); }; } private function onPressTimerHandler(_arg1:TimerEvent):void{ if (!_autoRepeat){ pressTimer.reset(); return; }; if (pressTimer.currentCount == 1){ pressTimer.delay = REPEAT_INTERVAL; }; dispatchEvent(new ComponentEvent(ComponentEvent.BUTTON_DOWN, true)); } override public function set enabled(_arg1:Boolean):void{ super.enabled = _arg1; _state = ButtonState.UP; invalidateState(); } public function set autoRepeat(_arg1:Boolean):void{ _autoRepeat = _arg1; } public function get state():String{ return (_state); } public function get selected():Boolean{ return (_selected); } override public function dispose():void{ pressTimer.reset(); pressTimer.removeEventListener(TimerEvent.TIMER, onPressTimerHandler); beacon = null; super.dispose(); } public function set toggle(_arg1:Boolean):void{ if (_toggle != _arg1){ _toggle = _arg1; invalidateState(); }; } public function get autoRepeat():Boolean{ return (_autoRepeat); } public function get toggle():Boolean{ return (_toggle); } protected function get beaconTarget():DisplayObject{ return (this); } private function onMouseEventHandler(_arg1:MouseEvent):void{ var _local2:Function; var _local3:Function; var _local4:Function; var _local5:Function; switch (_arg1.type){ case MouseEvent.ROLL_OVER: _local2 = (getStyle(AbstractButtonStyle.ROLL_OVER_HANDLER) as Function); if (_local2 != null){ _local2(this); }; _state = ButtonState.OVER; break; case MouseEvent.ROLL_OUT: _local3 = (getStyle(AbstractButtonStyle.ROLL_OUT_HANDLER) as Function); if (_local3 != null){ _local3(this); }; _state = ButtonState.UP; break; case MouseEvent.MOUSE_DOWN: _local4 = (getStyle(AbstractButtonStyle.MOUSE_DOWN_HANDLER) as Function); if (_local4 != null){ _local4(this); }; _state = ButtonState.DOWN; break; case MouseEvent.MOUSE_UP: _state = ButtonState.OVER; break; case MouseEvent.CLICK: _local5 = (getStyle(AbstractButtonStyle.MOUSE_CLICK_HANDLER) as Function); if (_local5 != null){ _local5(this); }; if (_toggle){ selected = !(selected); }; return; }; if (_state == ButtonState.DOWN){ if (_autoRepeat){ pressTimer.delay = REPEAT_DELAY; pressTimer.start(); }; dispatchEvent(new ComponentEvent(ComponentEvent.BUTTON_DOWN, true)); } else { pressTimer.reset(); }; invalidateState(); } public function set selected(_arg1:Boolean):void{ if (_selected != _arg1){ _selected = _arg1; if (_toggle){ dispatchEvent(new ComponentEvent(ComponentEvent.CHANGE, true)); invalidateState(); }; }; } public static function get defaultStyles():Object{ var _local1:Object = {rollOverHandler:null, rollOutHandler:null, mouseDownHandler:null, mouseClickHandler:null}; return (_local1); } } }//package com.bigwigmedia.ui
Section 194
//AbstractComponent (com.bigwigmedia.ui.AbstractComponent) package com.bigwigmedia.ui { import flash.display.*; import flash.events.*; import flash.geom.*; import com.bigwigmedia.events.*; import flash.text.*; import com.bigwigmedia.core.*; import com.bigwigmedia.ui.styles.*; import com.bigwigmedia.display.*; import com.bigwigmedia.application.*; public class AbstractComponent extends Sprite implements IDisposable { protected var _enabled:Boolean;// = true protected var _sharedStyles:Object; private var invalidateStylesFlag:Boolean;// = false private var _nestLevel:int;// = -5000 protected var _explicitHeight:Number;// = NAN private var invalidateStateFlag:Boolean;// = false protected var _visible:Boolean;// = true private var invalidateSizeFlag:Boolean;// = false protected var _explicitWidth:Number;// = NAN protected var _instanceStyles:Object; public function AbstractComponent(){ _instanceStyles = {}; _sharedStyles = {}; super(); super.visible = false; tabEnabled = false; IStyleManager(Singleton.getInstance("com.bigwigmedia.ui::IStyleManager")).registerComponent(this); createChildren(); invalidateAll(); } override public function set y(_arg1:Number):void{ move(super.x, _arg1); } public function setSize(_arg1:Number, _arg2:Number):void{ var _local3:Number = Math.round(_arg1); var _local4:Number = Math.round(_arg2); var _local5:Boolean; if (_explicitWidth != _local3){ _explicitWidth = _local3; _local5 = true; }; if (_explicitHeight != _local4){ _explicitHeight = _local4; _local5 = true; }; if (_local5){ invalidateSize(); }; } bigwigmedia_ns function setSharedStyle(_arg1:String, _arg2:Object):void{ _sharedStyles[_arg1] = _arg2; invalidateAll(); } override public function set width(_arg1:Number):void{ setSize(_arg1, height); } public function set enabled(_arg1:Boolean):void{ _enabled = _arg1; mouseEnabled = _arg1; invalidateState(); } public function set scale(_arg1:Number):void{ this.scaleX = (this.scaleY = _arg1); } private function enterFrameHandler(_arg1:Event):void{ ApplicationGlobals.application.stage.removeEventListener(Event.ENTER_FRAME, enterFrameHandler); draw(); } protected function invalidateState():void{ invalidateStateFlag = true; callLater(); } protected function createChildren():void{ } protected function validate():void{ invalidateSizeFlag = false; invalidateStateFlag = false; invalidateStylesFlag = false; } public function dispose():void{ IStyleManager(Singleton.getInstance("com.bigwigmedia.ui::IStyleManager")).unregisterComponent(this); ApplicationGlobals.application.stage.removeEventListener(Event.ENTER_FRAME, enterFrameHandler); _instanceStyles = {}; _sharedStyles = {}; } public function get nestLevel():int{ if (_nestLevel != EventPriority.LOWEST){ return (_nestLevel); }; var _local1:int = ((this is AbstractContainer)) ? EventPriority.DEFAULT : EventPriority.HIGHEST; var _local2:DisplayObjectContainer = parent; while (true) { _local1++; if ((_local2 is Stage)){ _nestLevel = _local1; break; } else { if (_local2 == null){ break; }; }; _local2 = _local2.parent; }; return (_local1); } override public function get height():Number{ return ((isNaN(_explicitHeight)) ? super.height : _explicitHeight); } protected function drawState():void{ } public function get enabled():Boolean{ return (_enabled); } protected function drawStyles():void{ } protected function draw():void{ var _local4:IDecoration; var _local5:IDecoration; var _local1:Number = this.width; var _local2:Number = this.height; if (invalidateStylesFlag){ drawStyles(); _local4 = (getStyle(AbstractComponentStyle.DECORATION) as IDecoration); if (_local4){ _local4.apply(this); }; }; if (invalidateStateFlag){ drawState(); _local5 = (getStyle(AbstractComponentStyle.DISABLED_DECORATION) as IDecoration); if (_local5){ if (_enabled){ _local5.remove(this); } else { _local5.apply(this); }; }; }; var _local3:Boolean = ((((invalidateSizeFlag) || (!((_local1 == this.width))))) || (!((_local2 == this.height)))); if (_local3){ measureSizes(); }; validate(); if (_local3){ dispatchEvent(new ComponentEvent(ComponentEvent.RESIZE)); }; if (((_visible) && (!(super.visible)))){ visible = true; }; } override public function get width():Number{ return ((isNaN(_explicitWidth)) ? super.width : _explicitWidth); } protected function callLater():void{ var _local1:Stage = ApplicationGlobals.application.stage; _local1.removeEventListener(Event.ENTER_FRAME, enterFrameHandler); _local1.addEventListener(Event.ENTER_FRAME, enterFrameHandler, false, nestLevel); } public function move(_arg1:Number, _arg2:Number):void{ var _local3:Number = Math.round(_arg1); var _local4:Number = Math.round(_arg2); var _local5:Boolean; if (super.x != _local3){ super.x = _local3; _local5 = true; }; if (super.y != _local4){ super.y = _local4; _local5 = true; }; if (_local5){ dispatchEvent(new ComponentEvent(ComponentEvent.MOVE)); }; } public function getComponentRect():Rectangle{ return (new Rectangle(super.x, super.y, this.width, this.height)); } protected function measureSizes():void{ } override public function set height(_arg1:Number):void{ setSize(width, _arg1); } protected function invalidateSize():void{ invalidateSizeFlag = true; callLater(); } override public function set visible(_arg1:Boolean):void{ _visible = _arg1; super.visible = _arg1; } public function setStyle(_arg1:String, _arg2:Object):void{ if (_arg2 === null){ delete _instanceStyles[_arg1]; }; _instanceStyles[_arg1] = _arg2; invalidateAll(); } override public function set x(_arg1:Number):void{ move(_arg1, super.y); } override public function get visible():Boolean{ return (_visible); } protected function invalidateAll():void{ invalidateSizeFlag = true; invalidateStateFlag = true; invalidateStylesFlag = true; callLater(); } public function drawNow():void{ ApplicationGlobals.application.stage.removeEventListener(Event.ENTER_FRAME, enterFrameHandler); draw(); } public function getStyle(_arg1:String):Object{ var _local2:Object = (_instanceStyles.hasOwnProperty(_arg1)) ? _instanceStyles[_arg1] : _sharedStyles[_arg1]; return (_local2); } protected function invalidateStyles():void{ invalidateStylesFlag = true; callLater(); } public static function get defaultStyles():Object{ var _local1:Object = {textFormat:new TextFormat("_sans", 11, 0, false, false, false, "", "", TextFormatAlign.LEFT, 0, 0, 0, 0), styleSheet:null, embedFonts:false, disabledDecoration:null, decoration:null}; return (_local1); } } }//package com.bigwigmedia.ui
Section 195
//AbstractContainer (com.bigwigmedia.ui.AbstractContainer) package com.bigwigmedia.ui { import flash.display.*; import flash.utils.*; public class AbstractContainer extends AbstractComponent { protected var _minHeight:Number;// = 0 protected var _maxWidth:Number;// = 10000 protected var _maxHeight:Number;// = 10000 protected var _components:Dictionary; protected var _minWidth:Number;// = 0 public function AbstractContainer(){ _components = new Dictionary(); super(); } override public function setSize(_arg1:Number, _arg2:Number):void{ var _local3:Number = Math.round(_arg1); var _local4:Number = Math.round(_arg2); if (_local3 < _minWidth){ _local3 = _minWidth; } else { if (_local3 > _maxWidth){ _local3 = _maxWidth; }; }; if (_local4 < _minHeight){ _local4 = _minHeight; } else { if (_local4 > _maxHeight){ _local4 = _maxHeight; }; }; var _local5:Boolean; if (_explicitWidth != _local3){ _explicitWidth = _local3; _local5 = true; }; if (_explicitHeight != _local4){ _explicitHeight = _local4; _local5 = true; }; if (_local5){ invalidateSize(); }; } public function set maxWidth(_arg1:Number):void{ _maxWidth = _arg1; setSize(width, height); } override public function set enabled(_arg1:Boolean):void{ var _local2:Object; for (_local2 in _components) { AbstractComponent(_local2).enabled = _arg1; }; } protected function componentAdded(_arg1:AbstractComponent):void{ } override public function removeChildAt(_arg1:int):DisplayObject{ var _local2:AbstractComponent = (getChildAt(_arg1) as AbstractComponent); if (((_local2) && (_components[_local2]))){ delete _components[_local2]; componentRemoved(_local2); }; var _local3:DisplayObject = getChildAt(_arg1); return (super.removeChildAt(_arg1)); } override public function addChildAt(_arg1:DisplayObject, _arg2:int):DisplayObject{ var _local3:AbstractComponent = (_arg1 as AbstractComponent); if (((_local3) && (!(_components[_local3])))){ _components[_local3] = true; componentAdded(_local3); }; return (super.addChildAt(_arg1, _arg2)); } public function get maxWidth():Number{ return (_maxWidth); } public function get minWidth():Number{ return (_minWidth); } public function set maxHeight(_arg1:Number):void{ _maxHeight = _arg1; setSize(width, height); } public function get minHeight():Number{ return (_minHeight); } override public function dispose():void{ var _local1:Object; for (_local1 in _components) { AbstractComponent(_local1).dispose(); }; _components = new Dictionary(); super.dispose(); } protected function componentRemoved(_arg1:AbstractComponent):void{ } public function set minWidth(_arg1:Number):void{ _minWidth = _arg1; setSize(width, height); } public function get maxHeight():Number{ return (_maxHeight); } public function set minHeight(_arg1:Number):void{ _minHeight = _arg1; setSize(width, height); } override public function removeChild(_arg1:DisplayObject):DisplayObject{ var _local2:int = this.getChildIndex(_arg1); return (removeChildAt(_local2)); } override public function addChild(_arg1:DisplayObject):DisplayObject{ return (addChildAt(_arg1, numChildren)); } } }//package com.bigwigmedia.ui
Section 196
//AbstractTextComponent (com.bigwigmedia.ui.AbstractTextComponent) package com.bigwigmedia.ui { import flash.text.*; import com.bigwigmedia.ui.styles.*; public class AbstractTextComponent extends AbstractComponent { protected var _text:String; protected var _textField:TextField; protected var _htmlText:String; public function AbstractTextComponent(_arg1:String){ _text = _arg1; mouseChildren = false; mouseEnabled = false; super(); } public function get text():String{ return (_text); } override protected function drawStyles():void{ var _local2:TextFormat; _textField.embedFonts = (getStyle(AbstractComponentStyle.EMBED_FONTS) as Boolean); var _local1:StyleSheet = (getStyle(AbstractComponentStyle.STYLE_SHEET) as StyleSheet); if (_local1){ _textField.styleSheet = _local1; } else { _textField.styleSheet = null; _local2 = (getStyle(AbstractComponentStyle.TEXT_FORMAT) as TextFormat); if (_local2){ _textField.setTextFormat(_local2); _textField.defaultTextFormat = _local2; }; }; } override protected function drawState():void{ if (_htmlText != null){ _textField.htmlText = _htmlText; } else { _textField.text = _text; }; } public function set htmlText(_arg1:String):void{ if (_htmlText != _arg1){ _htmlText = _arg1; invalidateSize(); invalidateState(); }; } override protected function measureSizes():void{ _textField.width = this.width; _textField.height = this.height; } public function set text(_arg1:String):void{ if (_text != _arg1){ _text = ((_arg1) || ("")); _htmlText = null; invalidateSize(); invalidateState(); }; } public function get htmlText():String{ return (_htmlText); } } }//package com.bigwigmedia.ui
Section 197
//ButtonState (com.bigwigmedia.ui.ButtonState) package com.bigwigmedia.ui { public class ButtonState { public static const DOWN:String = "down"; public static const OVER:String = "over"; public static const UP:String = "up"; } }//package com.bigwigmedia.ui
Section 198
//Console (com.bigwigmedia.ui.Console) package com.bigwigmedia.ui { import flash.display.*; import com.bigwigmedia.application.*; import flash.events.*; import com.bigwigmedia.events.*; import com.bigwigmedia.input.*; public class Console { private static var _active:Boolean = false; private static var _stage:Stage; private static var keyInputMan:KeyInputManager; private static var toggleKeyCode:uint; private static var _console:ConsoleView; private static function onKeyDownHandler(_arg1:KeyboardEvent):void{ if (toggleKeyCode > 0){ if (_arg1.keyCode == toggleKeyCode){ toggle(); }; }; } private static function onKeySequenceHandler(_arg1:KeyInputEvent):void{ if (_arg1.keyAction == "toggle_console"){ toggle(); }; } private static function toggle():void{ _active = !(_active); if (_active){ _stage.addChild(_console); _stage.addEventListener(Event.ENTER_FRAME, onEnterFrameHandler); } else { _stage.removeChild(_console); _stage.removeEventListener(Event.ENTER_FRAME, onEnterFrameHandler); }; } private static function onEnterFrameHandler(_arg1:Event):void{ _console.update(); } public static function initialize(_arg1:Array=null):void{ _console = new ConsoleView(); _stage = ApplicationGlobals.application.stage; if (!_arg1){ toggleKeyCode = 67; _stage.addEventListener(KeyboardEvent.KEY_DOWN, onKeyDownHandler); } else { if (_arg1.length == 1){ toggleKeyCode = _arg1[0]; _stage.addEventListener(KeyboardEvent.KEY_DOWN, onKeyDownHandler); } else { keyInputMan = new KeyInputManager(_stage); keyInputMan.mapSequence("toggle_console", _arg1); keyInputMan.addEventListener(KeyInputEvent.SEQUENCE, onKeySequenceHandler); }; }; } } }//package com.bigwigmedia.ui import flash.display.*; import com.bigwigmedia.application.*; import flash.events.*; import flash.utils.*; import com.bigwigmedia.core.*; import flash.text.*; import flash.system.*; class ConsoleView extends Sprite implements IUpdatable { private var maxMemory:int; private var infoField:TextField; private var viewMode:int;// = 0 private var tfDelay:int;// = 0 private var minMemory:int; private var firstDraw:Boolean;// = true private var tfTimer:int; public static const PROFILER:int = 0; public static const UPDATE_DELAY:int = 10; public static const INFO:int = 1; private function ConsoleView(){ infoField = new TextField(); infoField.defaultTextFormat = new TextFormat("_sans", 10); infoField.autoSize = TextFieldAutoSize.LEFT; infoField.selectable = false; infoField.x = 1; infoField.y = 0; infoField.multiline = true; addChild(infoField); this.mouseChildren = false; addEventListener(MouseEvent.CLICK, onMouseClickHandler); minMemory = (maxMemory = System.totalMemory); tfTimer = getTimer(); draw(); } private function draw():void{ var _local1:ApplicationInfo; graphics.clear(); graphics.lineStyle(0, 0, 1, true); graphics.beginFill(0x666666, 1); switch (viewMode){ case ConsoleView.PROFILER: graphics.drawRect(0, 0, 80, 56); infoField.htmlText = ""; break; case ConsoleView.INFO: _local1 = ApplicationGlobals.application.info; infoField.htmlText = (((((((((((((("<font color='#FFFFFF'>" + "APP: ") + _local1.name) + "\nID: ") + _local1.id) + "\nVER: ") + _local1.version) + "\nFP: ") + Capabilities.version) + " ") + Capabilities.playerType) + (Capabilities.isDebugger) ? " DEBUG" : " RELEASE") + "\nSANDBOX: ") + Security.sandboxType) + "</font>"); graphics.drawRect(0, 0, (infoField.width + 4), 68); break; }; graphics.endFill(); } public function update():void{ var _local1:int; var _local2:Number; if (++tfDelay >= UPDATE_DELAY){ tfDelay = 0; _local1 = System.totalMemory; if (_local1 > maxMemory){ maxMemory = _local1; }; if (_local1 < minMemory){ minMemory = _local1; }; _local2 = ((1000 * UPDATE_DELAY) / (getTimer() - tfTimer)); tfTimer = getTimer(); switch (viewMode){ case ConsoleView.PROFILER: infoField.htmlText = ((((((((((("<font color='#FFFFFF'>FPS: " + _local2.toFixed(2)) + "</font>\n") + "<font color='#9FCFFF'>MEM: ") + bytesToString(_local1)) + "</font>\n") + "<font color='#FFCC00'>MAX: ") + bytesToString(maxMemory)) + "</font>\n") + "<font color='#00FF00'>MIN: ") + bytesToString(minMemory)) + "</font>"); break; }; }; } private function onMouseClickHandler(_arg1:MouseEvent):void{ viewMode++; if (viewMode > ConsoleView.INFO){ viewMode = ConsoleView.PROFILER; }; draw(); } private function bytesToString(_arg1:uint):String{ var _local2:String; if (_arg1 < 0x0400){ _local2 = (String(_arg1) + "b"); } else { if (_arg1 < 0x2800){ _local2 = (Number((_arg1 / 0x0400)).toFixed(2) + "kb"); } else { if (_arg1 < 102400){ _local2 = (Number((_arg1 / 0x0400)).toFixed(1) + "kb"); } else { if (_arg1 < 0x100000){ _local2 = ((_arg1 >> 10) + "kb"); } else { if (_arg1 < 0xA00000){ _local2 = (Number((_arg1 / 0x100000)).toFixed(2) + "mb"); } else { if (_arg1 < 104857600){ _local2 = (Number((_arg1 / 0x100000)).toFixed(1) + "mb"); } else { _local2 = ((_arg1 >> 20) + "mb"); }; }; }; }; }; }; return (_local2); } }
Section 199
//ContextMenu_2DPlay (com.bigwigmedia.ui.ContextMenu_2DPlay) package com.bigwigmedia.ui { import flash.events.*; import flash.ui.*; import com.bigwigmedia.core.*; import com.bigwigmedia.net.*; public class ContextMenu_2DPlay { private static var moreGamesItem:ContextMenuItem = new ContextMenuItem("Play more games"); private static var getGameItem:ContextMenuItem = new ContextMenuItem("Get game for your site"); private static var scoresItem:ContextMenuItem = new ContextMenuItem("High scores"); private static var downloadItem:ContextMenuItem = new ContextMenuItem("Download this game"); private static var menu:ContextMenu; private static function onMenuItemSelect(_arg1:ContextMenuEvent):void{ var _local2:IURLCaller = IURLCaller(Singleton.getInstance("com.bigwigmedia.net::IURLCaller")); switch (_arg1.target){ case scoresItem: _local2.viewScores(); break; case moreGamesItem: _local2.playMoreGames(); break; case getGameItem: _local2.getGame(); break; case downloadItem: _local2.downloadGame(); break; }; } public static function getEmptyMenu():ContextMenu{ var _local1:ContextMenu = new ContextMenu(); _local1.hideBuiltInItems(); return (_local1); } public static function getMenu():ContextMenu{ Singleton.registerClass("com.bigwigmedia.net::IURLCaller", URLCaller_2DPlay); if (!menu){ menu = getEmptyMenu(); scoresItem.addEventListener(ContextMenuEvent.MENU_ITEM_SELECT, onMenuItemSelect); moreGamesItem.addEventListener(ContextMenuEvent.MENU_ITEM_SELECT, onMenuItemSelect); getGameItem.addEventListener(ContextMenuEvent.MENU_ITEM_SELECT, onMenuItemSelect); downloadItem.addEventListener(ContextMenuEvent.MENU_ITEM_SELECT, onMenuItemSelect); menu.customItems.push(scoresItem); menu.customItems.push(moreGamesItem); menu.customItems.push(getGameItem); menu.customItems.push(downloadItem); }; return (menu); } } }//package com.bigwigmedia.ui
Section 200
//CursorManager (com.bigwigmedia.ui.CursorManager) package com.bigwigmedia.ui { import flash.display.*; import flash.events.*; import flash.text.*; import com.bigwigmedia.core.*; import com.bigwigmedia.application.*; import flash.errors.*; import flash.ui.*; public class CursorManager implements ICursorManager { private var cursorLeftStage:Boolean; private var nextCursorID:int;// = 1 private var _currentCursorID:int;// = 0 private var cursorQueue:Array; private var cursorHolder:Sprite; private var _currentCursor:DisplayObject; private var stage:Stage; bigwigmedia_ns static var singletonAccessor:Boolean = true; public function CursorManager(){ cursorQueue = []; super(); if (!bigwigmedia_ns::singletonAccessor){ throw (new IllegalOperationError("Use method getInstance of Singleton class to get instance of CursorManager.")); }; stage = ApplicationGlobals.application.stage; cursorHolder = ApplicationGlobals.application.cursorHolder; } public function get currentCursor():DisplayObject{ return (_currentCursor); } public function removeCursor(_arg1:int):void{ var _local2:int = cursorQueue.length; var _local3:int; while (_local3 < _local2) { if (cursorQueue[_local3].id == _arg1){ cursorQueue.splice(_local3, 1); showCurrentCursor(); break; }; _local3++; }; } public function get currentCursorID():int{ return (_currentCursorID); } private function removeCustomEventHandlers():void{ stage.removeEventListener(MouseEvent.MOUSE_MOVE, onMouseMoveHandler, true); stage.removeEventListener(MouseEvent.MOUSE_OUT, onMouseOutHandler, true); var _local1:ContextMenu = InteractiveObject(ApplicationGlobals.application).contextMenu; if (_local1){ _local1.removeEventListener(ContextMenuEvent.MENU_SELECT, onContextMenuSelectHandler); }; } private function addCustomEventHandlers():void{ stage.addEventListener(MouseEvent.MOUSE_MOVE, onMouseMoveHandler, true); stage.addEventListener(MouseEvent.MOUSE_OUT, onMouseOutHandler, true); var _local1:ContextMenu = InteractiveObject(ApplicationGlobals.application).contextMenu; if (_local1){ _local1.addEventListener(ContextMenuEvent.MENU_SELECT, onContextMenuSelectHandler); }; } private function onMouseMoveHandler(_arg1:MouseEvent):void{ cursorHolder.x = stage.mouseX; cursorHolder.y = stage.mouseY; var _local2:Object = _arg1.target; if ((((_local2 is TextField)) && ((_local2.type == TextFieldType.INPUT)))){ cursorVisible = false; Mouse.show(); } else { cursorVisible = true; }; if (cursorLeftStage){ cursorLeftStage = false; cursorVisible = true; }; if (cursorQueue.length > 0){ Mouse.hide(); }; } public function setCursor(_arg1:Class, _arg2:int=2):int{ var _local3:int = nextCursorID++; cursorQueue.push(new CursorInfo(_arg1, _local3, _arg2)); cursorQueue.sortOn("priority", (Array.NUMERIC | Array.DESCENDING)); showCurrentCursor(); return (_local3); } private function onMouseOutHandler(_arg1:MouseEvent):void{ if ((((_arg1.relatedObject == null)) && ((cursorQueue.length > 0)))){ stage.addEventListener(Event.ENTER_FRAME, onEnterFrameHandler); }; } private function onContextMenuSelectHandler(_arg1:ContextMenuEvent):void{ stage.addEventListener(MouseEvent.MOUSE_OVER, contextMenuMouseOverHandler, true); } public function removeAllCursors():void{ cursorQueue = []; showCurrentCursor(); } private function showCurrentCursor():void{ var _local1:CursorInfo; if (cursorQueue.length > 0){ _local1 = cursorQueue[0]; if (_local1.id != _currentCursorID){ if (_currentCursor){ cursorHolder.removeChild(_currentCursor); }; _currentCursor = new _local1.cursorClass(); if (_currentCursor){ if ((_currentCursor is InteractiveObject)){ InteractiveObject(_currentCursor).mouseEnabled = false; }; cursorHolder.x = stage.mouseX; cursorHolder.y = stage.mouseY; cursorHolder.addChild(_currentCursor); _currentCursorID = _local1.id; addCustomEventHandlers(); }; }; Mouse.hide(); } else { if (_currentCursorID != 0){ _currentCursorID = 0; cursorHolder.removeChild(_currentCursor); _currentCursor = null; removeCustomEventHandlers(); }; Mouse.show(); }; } public function set cursorVisible(_arg1:Boolean):void{ if (cursorHolder){ cursorHolder.visible = _arg1; }; } private function onEnterFrameHandler(_arg1:Event):void{ stage.removeEventListener(Event.ENTER_FRAME, onEnterFrameHandler); cursorLeftStage = true; cursorVisible = false; Mouse.show(); } private function contextMenuMouseOverHandler(_arg1:MouseEvent):void{ stage.removeEventListener(MouseEvent.MOUSE_OVER, contextMenuMouseOverHandler, true); onMouseMoveHandler(_arg1); } } }//package com.bigwigmedia.ui class CursorInfo { public var cursorClass:Class; public var priority:int; public var id:int; private function CursorInfo(_arg1:Class, _arg2:int, _arg3:int){ this.cursorClass = _arg1; this.id = _arg2; this.priority = _arg3; } }
Section 201
//IconicButton (com.bigwigmedia.ui.IconicButton) package com.bigwigmedia.ui { import flash.display.*; import flash.utils.*; import com.bigwigmedia.ui.styles.*; import com.bigwigmedia.display.*; public class IconicButton extends AbstractButton { private var _downIcon:DisplayObject;// = null private var _upIcon:DisplayObject;// = null private var _overIcon:DisplayObject;// = null protected var _icon:DisplayObject; public function IconicButton(_arg1:Class=null, _arg2:Class=null, _arg3:Class=null){ this.upIcon = ((_arg1) || (DefaultIcon)); if (_arg2){ this.overIcon = _arg2; }; if (_arg3){ this.downIcon = _arg3; }; super(); } public function set upIcon(_arg1:Class):void{ _upIcon = getIconDisplayObject(_arg1); invalidateAll(); } override protected function drawState():void{ var _local1:IDecoration; switch (_state){ case ButtonState.UP: setNewIcon(_upIcon); _local1 = (getStyle(IconicButtonStyle.UP_DECORATION) as IDecoration); break; case ButtonState.OVER: setNewIcon(((_overIcon) || (_upIcon))); _local1 = (getStyle(IconicButtonStyle.OVER_DECORATION) as IDecoration); break; case ButtonState.DOWN: setNewIcon(((_downIcon) || (((_overIcon) || (_upIcon))))); _local1 = (getStyle(IconicButtonStyle.DOWN_DECORATION) as IDecoration); break; }; if (_local1){ _local1.apply(_icon); }; } override public function dispose():void{ super.dispose(); } private function getIconDisplayObject(_arg1:Class):DisplayObject{ if (getQualifiedSuperclassName(_arg1) == "flash.display::BitmapData"){ return (new Bitmap(new _arg1(0, 0))); }; return (new (_arg1)); } override protected function get beaconTarget():DisplayObject{ return (_icon); } public function set downIcon(_arg1:Class):void{ _downIcon = getIconDisplayObject(_arg1); invalidateAll(); } private function setNewIcon(_arg1:DisplayObject):void{ if (_icon == _arg1){ return; }; if (_icon){ removeChild(_icon); }; _icon = _arg1; addChild(_icon); } public function set overIcon(_arg1:Class):void{ _overIcon = getIconDisplayObject(_arg1); invalidateAll(); } override protected function measureSizes():void{ _icon.width = this.width; _icon.height = this.height; } public static function get defaultStyles():Object{ var _local1:Object = {upDecoration:null, overDecoration:null, downDecoration:null}; return (_local1); } } }//package com.bigwigmedia.ui import flash.display.*; import flash.geom.*; class DefaultIcon extends Shape { public static const WIDTH:Number = 32; public static const HEIGHT:Number = 24; private function DefaultIcon(){ graphics.beginFill(0x333333, 1); graphics.drawRect(0, 0, WIDTH, HEIGHT); graphics.endFill(); var _local1:Matrix = new Matrix(); _local1.createGradientBox((WIDTH - 2), (HEIGHT - 2), (Math.PI / 2), 0, 0); graphics.beginGradientFill(GradientType.LINEAR, [0xFFFFFF, 0xCCCCCC], [1, 1], [0, 0xFF], _local1); graphics.drawRect(1, 1, (WIDTH - 2), (HEIGHT - 2)); graphics.endFill(); this.scale9Grid = new Rectangle(1, 1, (WIDTH - 2), (HEIGHT - 2)); } }
Section 202
//ICursorManager (com.bigwigmedia.ui.ICursorManager) package com.bigwigmedia.ui { import flash.display.*; public interface ICursorManager { function removeAllCursors():void; function removeCursor(_arg1:int):void; function get currentCursor():DisplayObject; function setCursor(_arg1:Class, _arg2:int=2):int; function get currentCursorID():int; function set cursorVisible(_arg1:Boolean):void; } }//package com.bigwigmedia.ui
Section 203
//IStyleManager (com.bigwigmedia.ui.IStyleManager) package com.bigwigmedia.ui { public interface IStyleManager { function unregisterComponent(_arg1:AbstractComponent):void; function registerComponent(_arg1:AbstractComponent):void; function setSharedStyle(_arg1:Class, _arg2:String, _arg3:Object):void; } }//package com.bigwigmedia.ui
Section 204
//Label (com.bigwigmedia.ui.Label) package com.bigwigmedia.ui { import flash.text.*; public class Label extends AbstractTextComponent { public function Label(_arg1:String=""){ super(_arg1); } override protected function createChildren():void{ _textField = new TextField(); _textField.background = false; _textField.wordWrap = false; _textField.autoSize = TextFieldAutoSize.LEFT; _textField.text = _text; addChild(_textField); } } }//package com.bigwigmedia.ui
Section 205
//LabelButton (com.bigwigmedia.ui.LabelButton) package com.bigwigmedia.ui { import flash.display.*; import flash.text.*; import com.bigwigmedia.ui.styles.*; public class LabelButton extends AbstractButton { protected var _labelField:TextField; protected var _label:String; public function LabelButton(_arg1:String=""){ _label = _arg1; super(); } override protected function createChildren():void{ if (!_labelField){ _labelField = new TextField(); _labelField.type = TextFieldType.DYNAMIC; _labelField.selectable = false; _labelField.autoSize = TextFieldAutoSize.LEFT; _labelField.text = _label; addChild(_labelField); }; } override protected function drawStyles():void{ _labelField.embedFonts = (getStyle(AbstractComponentStyle.EMBED_FONTS) as Boolean); var _local1:TextFormat = (getStyle(AbstractComponentStyle.TEXT_FORMAT) as TextFormat); if (_local1){ _labelField.setTextFormat(_local1); _labelField.defaultTextFormat = _local1; }; } public function set label(_arg1:String):void{ if (_label != _arg1){ _labelField.text = (_label = _arg1); invalidateSize(); }; } override protected function drawState():void{ switch (_state){ case ButtonState.UP: _labelField.textColor = (getStyle(LabelButtonStyle.UP_STATE_COLOR) as uint); break; case ButtonState.OVER: _labelField.textColor = (getStyle(LabelButtonStyle.OVER_STATE_COLOR) as uint); break; case ButtonState.DOWN: _labelField.textColor = (getStyle(LabelButtonStyle.DOWN_STATE_COLOR) as uint); break; }; } override protected function measureSizes():void{ graphics.clear(); graphics.lineStyle(); graphics.beginFill(0xFFFFFF, 0); graphics.drawRect(0, 0, this.width, this.height); } public function get label():String{ return (_label); } override protected function get beaconTarget():DisplayObject{ return (_labelField); } public static function get defaultStyles():Object{ var _local1:Object = {upStateColor:0xFFFFFF, overStateColor:0xFF0000, downStateColor:0x880000}; return (_local1); } } }//package com.bigwigmedia.ui
Section 206
//StyleManager (com.bigwigmedia.ui.StyleManager) package com.bigwigmedia.ui { import flash.utils.*; import com.bigwigmedia.core.*; import flash.errors.*; public class StyleManager implements IStyleManager { private var cachedStylesHash:Dictionary; private var sharedStylesHash:Dictionary; private var _components:Dictionary; bigwigmedia_ns static var singletonAccessor:Boolean = false; public function StyleManager(){ sharedStylesHash = new Dictionary(); cachedStylesHash = new Dictionary(); _components = new Dictionary(); super(); if (!bigwigmedia_ns::singletonAccessor){ throw (new IllegalOperationError("Use method getInstance of Singleton class to get instance of StyleManager.")); }; } public function unregisterComponent(_arg1:AbstractComponent):void{ if (_components[_arg1]){ delete _components[_arg1]; }; } public function registerComponent(_arg1:AbstractComponent):void{ var _local2:Object; var _local3:String; if (!_components[_arg1]){ _components[_arg1] = true; _local2 = getMergedSharedStyles(_arg1); for (_local3 in _local2) { var _local6 = _arg1; _local6.bigwigmedia_ns::setSharedStyle(_local3, _local2[_local3]); }; }; } private function invalidateSharedStyles(_arg1:Class):void{ var _local2:Object; var _local3:AbstractComponent; var _local4:Object; var _local5:String; for each (_local2 in _components) { _local3 = (_local2 as AbstractComponent); if ((_local3 is _arg1)){ _local4 = getMergedSharedStyles(_local3); for (_local5 in _local4) { var _local10 = _local3; _local10.bigwigmedia_ns::setSharedStyle(_local5, _local4[_local5]); }; }; }; } private function getMergedSharedStyles(_arg1:AbstractComponent):Object{ var _local5:String; var _local6:Class; var _local7:Object; var _local8:String; var _local2:Class = (getDefinitionByName(getQualifiedClassName(_arg1)) as Class); if (cachedStylesHash[_local2]){ return (cachedStylesHash[_local2]); }; var _local3:Object = getSharedStyle(_local2); var _local4:Object = {}; for (_local5 in _local3) { _local4[_local5] = _local3[_local5]; }; _local6 = (getDefinitionByName(getQualifiedClassName(_arg1)) as Class); while (true) { _local7 = getSharedStyle(_local6); for (_local8 in _local7) { if (_local4[_local8] === undefined){ _local4[_local8] = _local7[_local8]; }; }; if (getQualifiedClassName(_local6) == "com.bigwigmedia.ui::AbstractComponent"){ break; } else { _local6 = (getDefinitionByName(getQualifiedSuperclassName(_local6)) as Class); }; }; cachedStylesHash[_local2] = _local4; return (_local4); } private function getSharedStyle(_arg1:Class):Object{ var _local2:Object; if (!sharedStylesHash[_arg1]){ _local2 = _arg1["defaultStyles"]; sharedStylesHash[_arg1] = ((_local2) || (new Object())); }; return (sharedStylesHash[_arg1]); } public function setSharedStyle(_arg1:Class, _arg2:String, _arg3:Object):void{ var _local4:Object = getSharedStyle(_arg1); _local4[_arg2] = _arg3; cachedStylesHash = new Dictionary(); invalidateSharedStyles(_arg1); } } }//package com.bigwigmedia.ui
Section 207
//TextArea (com.bigwigmedia.ui.TextArea) package com.bigwigmedia.ui { import flash.text.*; public class TextArea extends AbstractTextComponent { public function TextArea(_arg1:String=""){ super(_arg1); } public function get textWidth():Number{ return (_textField.textWidth); } override protected function createChildren():void{ _textField = new TextField(); _textField.background = false; _textField.wordWrap = true; _textField.multiline = true; _textField.autoSize = TextFieldAutoSize.LEFT; _textField.text = _text; addChild(_textField); } public function get textHeight():Number{ return (_textField.textHeight); } } }//package com.bigwigmedia.ui
Section 208
//ArrayUtil (com.bigwigmedia.utils.ArrayUtil) package com.bigwigmedia.utils { public class ArrayUtil { public static function shuffle(_arg1:Array):Array{ var _local5:int; var _local6:*; var _local2:Array = _arg1.slice(); var _local3:int = _local2.length; if (_local3 <= 1){ return (_local2); }; var _local4:int; while (_local4 < _local3) { _local5 = Math.floor((Math.random() * _local3)); _local6 = _local2[_local4]; _local2[_local4] = _local2[_local5]; _local2[_local5] = _local6; _local4++; }; return (_local2); } } }//package com.bigwigmedia.utils
Section 209
//MathUtil (com.bigwigmedia.utils.MathUtil) package com.bigwigmedia.utils { public class MathUtil { public static const RADIANS_TO_DEGREES:Number = 57.2957795130823; public static const DEGREES_TO_RADIANS:Number = 0.0174532925199433; public static function nearEquals(_arg1:Number, _arg2:Number, _arg3:Number=0.001):Boolean{ var _local4:Number = (_arg1 - _arg2); return ((((_local4 < _arg3)) && ((_local4 > -(_arg3))))); } } }//package com.bigwigmedia.utils
Section 210
//NameUtil (com.bigwigmedia.utils.NameUtil) package com.bigwigmedia.utils { import flash.display.*; import flash.utils.*; public class NameUtil { public static function getClassName(_arg1):String{ var _local2:String = getQualifiedClassName(_arg1); var _local3:int = _local2.indexOf("::"); if (_local3 != -1){ _local2 = _local2.substr((_local3 + 2)); }; return (_local2); } public static function toDisplayObjectString(_arg1:Object):String{ var _local2:String; var _local3:DisplayObject; var _local4:String; if ((_arg1 is DisplayObject)){ _local3 = (_arg1 as DisplayObject); while (_local3 != null) { if (((((_local3.parent) && (_local3.stage))) && ((_local3.parent == _local3.stage)))){ break; }; _local4 = _local3.name; _local2 = ((_local2 == null)) ? _local4 : ((_local4 + ".") + _local2); _local3 = _local3.parent; }; } else { _local2 = "Not a DisplayObject"; }; return (_local2); } } }//package com.bigwigmedia.utils
Section 211
//NumberFormatter (com.bigwigmedia.utils.NumberFormatter) package com.bigwigmedia.utils { public class NumberFormatter { public static function formatNumber(_arg1:Object, _arg2:String=","):String{ var _local3:String = String(_arg1); var _local4 = ""; var _local5:Number = _local3.length; var _local6:int; while (_local6 < _local5) { if (((((_local6 % 3) == 0)) && ((_local6 > 0)))){ _local4 = (_arg2 + _local4); }; _local4 = (_local3.substr((_local5 - (_local6 + 1)), 1) + _local4); _local6++; }; return (_local4); } public static function addLeadingZeros(_arg1:Object, _arg2:int=2):String{ var _local3:String = String(_arg1); while (_local3.length < _arg2) { _local3 = ("0" + _local3); }; return (_local3); } } }//package com.bigwigmedia.utils
Section 212
//ObjectUtil (com.bigwigmedia.utils.ObjectUtil) package com.bigwigmedia.utils { public class ObjectUtil { public static function getRandomValue(_arg1:Object){ var _local3:Object; var _local4:int; var _local2:Array = []; for each (_local3 in _arg1) { _local2.push(_local3); }; _local4 = (Math.random() * _local2.length); return (_local2[_local4]); } public static function formatToString(_arg1, ... _args):String{ var _local6:String; var _local7:Object; var _local3:String = ("[" + NameUtil.getClassName(_arg1)); var _local4:int = _args.length; var _local5:int; while (_local5 < _local4) { _local6 = _args[_local5]; if (_arg1.hasOwnProperty(_local6)){ _local7 = _arg1[_local6]; if ((_local7 is String)){ _local3 = (_local3 + ((((" " + _local6) + "=\"") + _local7) + "\"")); } else { _local3 = (_local3 + (((" " + _local6) + "=") + _local7)); }; }; _local5++; }; return ((_local3 + "]")); } public static function hasProperties(_arg1:Object):Boolean{ var _local2:String; for (_local2 in _arg1) { return (true); }; return (false); } } }//package com.bigwigmedia.utils
Section 213
//Transitions (com.boostworthy.animation.easing.Transitions) package com.boostworthy.animation.easing { public final class Transitions { public static const SINE_OUT:String = "sineOut"; public static const QUAD_IN_AND_OUT:String = "quadInAndOut"; private static const ELASTIC_PERIOD:Number = 400; public static const QUART_OUT:String = "quartOut"; public static const BOUNCE:String = "bounce"; public static const EXPO_IN:String = "expoIn"; public static const SINE_IN:String = "sineIn"; public static const CUBIC_OUT:String = "cubicOut"; public static const QUINT_OUT:String = "quintOut"; public static const QUAD_IN:String = "quadIn"; public static const QUINT_IN_AND_OUT:String = "quintInAndOut"; public static const ELASTIC_OUT:String = "elasticOut"; public static const LINEAR:String = "linear"; public static const QUART_IN_AND_OUT:String = "quartInAndOut"; public static const QUAD_OUT:String = "quadOut"; public static const QUINT_IN:String = "quintIn"; public static const CUBIC_IN_AND_OUT:String = "cubicInAndOut"; public static const QUART_IN:String = "quartIn"; public static const DEFAULT_TRANSITION:String = "linear"; private static const BACK_OVERSHOOT:Number = 1.70158; public static const BACK_OUT:String = "backOut"; private static const ELASTIC_AMPLITUDE:Number = undefined; public static const CUBIC_IN:String = "cubicIn"; public static const ELASTIC_IN_AND_OUT:String = "elasticInAndOut"; public static const EXPO_OUT:String = "expoOut"; public static const BACK_IN_AND_OUT:String = "backInAndOut"; public static const ELASTIC_IN:String = "elasticIn"; public static const EXPO_IN_AND_OUT:String = "expoInAndOut"; public static const BACK_IN:String = "backIn"; public static const SINE_IN_AND_OUT:String = "sineInAndOut"; public static function quadOut(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):Number{ _arg1 = (_arg1 / _arg4); return ((((-(_arg3) * _arg1) * (_arg1 - 2)) + _arg2)); } public static function expoOut(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):Number{ return (((_arg1)==_arg4) ? (_arg2 + _arg3) : ((_arg3 * (-(Math.pow(2, ((-10 * _arg1) / _arg4))) + 1)) + _arg2)); } public static function expoInAndOut(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):Number{ if (_arg1 == 0){ return (_arg2); }; if (_arg1 == _arg4){ return ((_arg2 + _arg3)); }; _arg1 = (_arg1 / (_arg4 / 2)); if (_arg1 < 1){ return ((((_arg3 / 2) * Math.pow(2, (10 * (_arg1 - 1)))) + _arg2)); }; --_arg1; return ((((_arg3 / 2) * (-(Math.pow(2, (-10 * _arg1))) + 2)) + _arg2)); } public static function quintOut(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):Number{ _arg1 = ((_arg1 / _arg4) - 1); return (((_arg3 * (((((_arg1 * _arg1) * _arg1) * _arg1) * _arg1) + 1)) + _arg2)); } public static function cubicIn(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):Number{ _arg1 = (_arg1 / _arg4); return (((((_arg3 * _arg1) * _arg1) * _arg1) + _arg2)); } public static function sineIn(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):Number{ return ((((-(_arg3) * Math.cos(((_arg1 / _arg4) * (Math.PI / 2)))) + _arg2) + _arg3)); } public static function sineOut(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):Number{ return (((_arg3 * Math.sin(((_arg1 / _arg4) * (Math.PI / 2)))) + _arg2)); } public static function quartOut(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):Number{ _arg1 = ((_arg1 / _arg4) - 1); return (((-(_arg3) * ((((_arg1 * _arg1) * _arg1) * _arg1) - 1)) + _arg2)); } public static function sineInAndOut(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):Number{ return ((((-(_arg3) / 2) * (Math.cos(((_arg1 / _arg4) * Math.PI)) - 1)) + _arg2)); } public static function bounce(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):Number{ _arg1 = (_arg1 / _arg4); if (_arg1 < (1 / 2.75)){ return (((_arg3 * ((7.5625 * _arg1) * _arg1)) + _arg2)); }; if (_arg1 < (2 / 2.75)){ _arg1 = (_arg1 - (1.5 / 2.75)); return (((_arg3 * (((7.5625 * _arg1) * _arg1) + 0.75)) + _arg2)); }; if (_arg1 < (2.5 / 2.75)){ _arg1 = (_arg1 - (2.25 / 2.75)); return (((_arg3 * (((7.5625 * _arg1) * _arg1) + 0.9375)) + _arg2)); }; _arg1 = (_arg1 - (2.625 / 2.75)); return (((_arg3 * (((7.5625 * _arg1) * _arg1) + 0.984375)) + _arg2)); } public static function backInAndOut(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):Number{ var _local5:Number = BACK_OVERSHOOT; _arg1 = (_arg1 / (_arg4 / 2)); if (_arg1 < 1){ _local5 = (_local5 * 1.525); return ((((_arg3 / 2) * ((_arg1 * _arg1) * (((_local5 + 1) * _arg1) - _local5))) + _arg2)); }; _arg1 = (_arg1 - 2); _local5 = (_local5 * 1.525); return ((((_arg3 / 2) * (((_arg1 * _arg1) * (((_local5 + 1) * _arg1) + _local5)) + 2)) + _arg2)); } public static function expoIn(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):Number{ return (((_arg1)==0) ? _arg2 : ((_arg3 * Math.pow(2, (10 * ((_arg1 / _arg4) - 1)))) + _arg2)); } public static function cubicOut(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):Number{ _arg1 = ((_arg1 / _arg4) - 1); return (((_arg3 * (((_arg1 * _arg1) * _arg1) + 1)) + _arg2)); } public static function linear(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):Number{ return ((((_arg3 * _arg1) / _arg4) + _arg2)); } public static function quadIn(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):Number{ _arg1 = (_arg1 / _arg4); return ((((_arg3 * _arg1) * _arg1) + _arg2)); } public static function quintIn(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):Number{ _arg1 = (_arg1 / _arg4); return (((((((_arg3 * _arg1) * _arg1) * _arg1) * _arg1) * _arg1) + _arg2)); } public static function elasticOut(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):Number{ var _local7:Number; var _local5:Number = ELASTIC_AMPLITUDE; var _local6:Number = ELASTIC_PERIOD; if (_arg1 == 0){ return (_arg2); }; _arg1 = (_arg1 / _arg4); if (_arg1 == 1){ return ((_arg2 + _arg3)); }; if (!_local6){ _local6 = (_arg4 * 0.3); }; if (((!(_local5)) || ((_local5 < Math.abs(_arg3))))){ _local5 = _arg3; _local7 = (_local6 / 4); } else { _local7 = ((_local6 / (2 * Math.PI)) * Math.asin((_arg3 / _local5))); }; return (((((_local5 * Math.pow(2, (-10 * _arg1))) * Math.sin(((((_arg1 * _arg4) - _local7) * (2 * Math.PI)) / _local6))) + _arg3) + _arg2)); } public static function quartInAndOut(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):Number{ _arg1 = (_arg1 / (_arg4 / 2)); if (_arg1 < 1){ return (((((((_arg3 / 2) * _arg1) * _arg1) * _arg1) * _arg1) + _arg2)); }; _arg1 = (_arg1 - 2); return ((((-(_arg3) / 2) * ((((_arg1 * _arg1) * _arg1) * _arg1) - 2)) + _arg2)); } public static function quartIn(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):Number{ _arg1 = (_arg1 / _arg4); return ((((((_arg3 * _arg1) * _arg1) * _arg1) * _arg1) + _arg2)); } public static function quadInAndOut(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):Number{ _arg1 = (_arg1 / (_arg4 / 2)); if (_arg1 < 1){ return (((((_arg3 / 2) * _arg1) * _arg1) + _arg2)); }; --_arg1; return ((((-(_arg3) / 2) * ((_arg1 * (_arg1 - 2)) - 1)) + _arg2)); } public static function quintInAndOut(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):Number{ _arg1 = (_arg1 / (_arg4 / 2)); if (_arg1 < 1){ return ((((((((_arg3 / 2) * _arg1) * _arg1) * _arg1) * _arg1) * _arg1) + _arg2)); }; _arg1 = (_arg1 - 2); return ((((_arg3 / 2) * (((((_arg1 * _arg1) * _arg1) * _arg1) * _arg1) + 2)) + _arg2)); } public static function elasticIn(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):Number{ var _local7:Number; var _local5:Number = ELASTIC_AMPLITUDE; var _local6:Number = ELASTIC_PERIOD; if (_arg1 == 0){ return (_arg2); }; _arg1 = (_arg1 / _arg4); if (_arg1 == 1){ return ((_arg2 + _arg3)); }; if (!_local6){ _local6 = (_arg4 * 0.3); }; if (((!(_local5)) || ((_local5 < Math.abs(_arg3))))){ _local5 = _arg3; _local7 = (_local6 / 4); } else { _local7 = ((_local6 / (2 * Math.PI)) * Math.asin((_arg3 / _local5))); }; --_arg1; return ((-(((_local5 * Math.pow(2, (10 * _arg1))) * Math.sin(((((_arg1 * _arg4) - _local7) * (2 * Math.PI)) / _local6)))) + _arg2)); } public static function cubicInAndOut(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):Number{ _arg1 = (_arg1 / (_arg4 / 2)); if (_arg1 < 1){ return ((((((_arg3 / 2) * _arg1) * _arg1) * _arg1) + _arg2)); }; _arg1 = (_arg1 - 2); return ((((_arg3 / 2) * (((_arg1 * _arg1) * _arg1) + 2)) + _arg2)); } public static function backOut(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):Number{ var _local5:Number = BACK_OVERSHOOT; _arg1 = ((_arg1 / _arg4) - 1); return (((_arg3 * (((_arg1 * _arg1) * (((_local5 + 1) * _arg1) + _local5)) + 1)) + _arg2)); } public static function elasticInAndOut(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):Number{ var _local7:Number; var _local5:Number = ELASTIC_AMPLITUDE; var _local6:Number = ELASTIC_PERIOD; if (_arg1 == 0){ return (_arg2); }; _arg1 = (_arg1 / (_arg4 / 2)); if (_arg1 == 2){ return ((_arg2 + _arg3)); }; if (!_local6){ _local6 = (_arg4 * (0.3 * 1.5)); }; if (((!(_local5)) || ((_local5 < Math.abs(_arg3))))){ _local5 = _arg3; _local7 = (_local6 / 4); } else { _local7 = ((_local6 / (2 * Math.PI)) * Math.asin((_arg3 / _local5))); }; if (_arg1 < 1){ --_arg1; return (((-0.5 * ((_local5 * Math.pow(2, (10 * _arg1))) * Math.sin(((((_arg1 * _arg4) - _local7) * (2 * Math.PI)) / _local6)))) + _arg2)); }; --_arg1; return ((((((_local5 * Math.pow(2, (-10 * _arg1))) * Math.sin(((((_arg1 * _arg4) - _local7) * (2 * Math.PI)) / _local6))) * 0.5) + _arg3) + _arg2)); } public static function backIn(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):Number{ var _local5:Number = BACK_OVERSHOOT; _arg1 = (_arg1 / _arg4); return (((((_arg3 * _arg1) * _arg1) * (((_local5 + 1) * _arg1) - _local5)) + _arg2)); } } }//package com.boostworthy.animation.easing
Section 214
//Renderer (com.boostworthy.animation.rendering.Renderer) package com.boostworthy.animation.rendering { import flash.display.*; import flash.events.*; import com.boostworthy.utils.logger.*; import flash.utils.*; import com.boostworthy.core.*; public class Renderer extends EventDispatcher implements IDisposable { protected var m_objTimer:Timer; protected var m_fncOnTimer:Function; protected var m_objStage:Stage; protected var m_fncOnEnterFrame:Function; protected var m_objLog:ILog; public function Renderer(_arg1:Function, _arg2:Function, _arg3:Number){ if (_arg1 != null){ m_fncOnEnterFrame = _arg1; m_objStage = Global.stage; }; if (_arg2 != null){ m_fncOnTimer = _arg2; m_objTimer = new Timer(_arg3, 0); m_objTimer.addEventListener(TimerEvent.TIMER, m_fncOnTimer); }; m_objLog = LogFactory.getInstance().getLog("Renderer"); } public function start(_arg1:Number):void{ if (_arg1 == RenderMethod.ENTER_FRAME){ startEnterFrame(); } else { if (_arg1 == RenderMethod.TIMER){ startTimer(); }; }; } protected function startTimer():void{ m_objTimer.start(); } public function startAll():void{ startEnterFrame(); startTimer(); } public function stop(_arg1:Number):void{ if (_arg1 == RenderMethod.ENTER_FRAME){ stopEnterFrame(); } else { if (_arg1 == RenderMethod.TIMER){ stopTimer(); }; }; } protected function stopTimer():void{ m_objTimer.stop(); } public function stopAll():void{ stopEnterFrame(); stopTimer(); } protected function startEnterFrame():void{ if (!m_objStage){ m_objStage = Global.stage; }; if (m_objStage){ m_objStage.addEventListener(Event.ENTER_FRAME, m_fncOnEnterFrame); } else { m_objLog.warning("startEnterFrame :: Unable to add a listener to the enter frame event because a global stage reference does not exist."); }; } protected function stopEnterFrame():void{ if (m_objStage){ m_objStage.removeEventListener(Event.ENTER_FRAME, m_fncOnEnterFrame); }; } public function dispose():void{ if (((!((m_fncOnEnterFrame == null))) && (!((m_objStage == null))))){ m_objStage.removeEventListener(Event.ENTER_FRAME, m_fncOnEnterFrame); }; if (m_objTimer != null){ m_objTimer.removeEventListener(TimerEvent.TIMER, m_fncOnTimer); }; m_fncOnEnterFrame = null; m_objTimer = null; m_fncOnTimer = null; m_objStage = null; } } }//package com.boostworthy.animation.rendering
Section 215
//RenderMethod (com.boostworthy.animation.rendering.RenderMethod) package com.boostworthy.animation.rendering { public final class RenderMethod { public static const TIMER:uint = 2; public static const ENTER_FRAME:uint = 1; } }//package com.boostworthy.animation.rendering
Section 216
//Action (com.boostworthy.animation.sequence.tweens.Action) package com.boostworthy.animation.sequence.tweens { public class Action implements ITween { protected const PROPERTY:String = "action"; protected var m_aParamsForward:Array; protected var m_uPreviousFrame:uint; protected var m_uLastFrame:uint; protected var m_fncReverse:Function; protected var m_uFirstFrame:uint; protected var m_aParamsReverse:Array; protected var m_fncForward:Function; public function Action(_arg1:Function, _arg2:Array, _arg3:Function, _arg4:Array, _arg5:uint){ m_fncForward = _arg1; m_aParamsForward = _arg2; m_fncReverse = _arg3; m_aParamsReverse = _arg4; m_uFirstFrame = _arg5; m_uLastFrame = _arg5; m_uPreviousFrame = 1; } public function get target():Object{ return (null); } public function get property():String{ return (PROPERTY); } public function get firstFrame():uint{ return (m_uFirstFrame); } public function clone():ITween{ return (new Action(m_fncForward, m_aParamsForward, m_fncReverse, m_aParamsReverse, m_uFirstFrame)); } public function get lastFrame():uint{ return (m_uLastFrame); } public function renderFrame(_arg1:uint):void{ if (_arg1 == m_uFirstFrame){ if (m_uPreviousFrame > _arg1){ m_fncReverse.apply(null, m_aParamsReverse); } else { m_fncForward.apply(null, m_aParamsForward); }; }; m_uPreviousFrame = _arg1; } } }//package com.boostworthy.animation.sequence.tweens
Section 217
//ITween (com.boostworthy.animation.sequence.tweens.ITween) package com.boostworthy.animation.sequence.tweens { public interface ITween { function get target():Object; function clone():ITween; function get property():String; function get lastFrame():uint; function get firstFrame():uint; function renderFrame(_arg1:uint):void; } }//package com.boostworthy.animation.sequence.tweens
Section 218
//Tween (com.boostworthy.animation.sequence.tweens.Tween) package com.boostworthy.animation.sequence.tweens { import com.boostworthy.animation.easing.*; public class Tween implements ITween { protected const DEFAULT_TRANSITION:String = "linear"; protected var m_objToTween:Object; protected var m_strTransition:String; protected var m_bIsDirty:Boolean; protected var m_strProperty:String; protected var m_uFirstFrame:uint; protected var m_uLastFrame:uint; protected var m_nTargetValue:Number; protected var m_nChangeValue:Number; protected var m_nStartValue:Number; protected var m_fncTransition:Function; public function Tween(_arg1:Object, _arg2:String, _arg3:Number, _arg4:uint, _arg5:uint, _arg6:String="linear"){ m_objToTween = _arg1; m_strProperty = _arg2; m_nTargetValue = _arg3; m_uFirstFrame = _arg4; m_uLastFrame = _arg5; m_strTransition = _arg6; m_fncTransition = Transitions[m_strTransition]; } public function renderFrame(_arg1:uint):void{ var _local2:Number; if ((((_arg1 < m_uFirstFrame)) && (!(isNaN(m_nStartValue))))){ m_objToTween[m_strProperty] = m_nStartValue; m_bIsDirty = true; } else { if ((((_arg1 >= m_uFirstFrame)) && ((_arg1 <= m_uLastFrame)))){ _local2 = ((_arg1 - m_uFirstFrame) / (m_uLastFrame - m_uFirstFrame)); if (((isNaN(m_nStartValue)) && ((_arg1 == m_uFirstFrame)))){ m_nStartValue = m_objToTween[m_strProperty]; m_nChangeValue = (m_nTargetValue - m_nStartValue); }; m_objToTween[m_strProperty] = m_fncTransition(_local2, m_nStartValue, m_nChangeValue, 1); m_bIsDirty = true; } else { if ((((_arg1 > m_uLastFrame)) && (m_bIsDirty))){ m_objToTween[m_strProperty] = m_nTargetValue; m_bIsDirty = false; }; }; }; } public function get target():Object{ return (m_objToTween); } public function get property():String{ return (m_strProperty); } public function get lastFrame():uint{ return (m_uLastFrame); } public function clone():ITween{ return (new Tween(m_objToTween, m_strProperty, m_nTargetValue, m_uFirstFrame, m_uLastFrame, m_strTransition)); } public function get firstFrame():uint{ return (m_uFirstFrame); } } }//package com.boostworthy.animation.sequence.tweens
Section 219
//Timeline (com.boostworthy.animation.sequence.Timeline) package com.boostworthy.animation.sequence { import flash.events.*; import com.boostworthy.events.*; import com.boostworthy.animation.sequence.tweens.*; import com.boostworthy.collections.iterators.*; import com.boostworthy.core.*; import com.boostworthy.animation.rendering.*; import com.boostworthy.animation.*; public class Timeline extends EventDispatcher implements IDisposable { protected const DEFAULT_LOOP:Boolean = false; protected const DEFAULT_RENDER_METHOD:uint = 2; protected const DEFAULT_FRAME_RATE:Number = 60; protected var m_uFrameRate:uint; protected var m_uFrame:uint; protected var m_uRenderMethod:uint; protected var m_nRefreshRate:Number; protected var m_objTweenStack:TweenStack; protected var m_bLoop:Boolean; protected var m_uLength:uint; protected var m_objRendererPrev:Renderer; protected var m_objRendererNext:Renderer; public function Timeline(_arg1:uint=2, _arg2:Number=60){ init(_arg1, _arg2); } protected function computeFrameData(_arg1:uint, _arg2:uint):void{ var _local5:ITween; var _local3:IIterator = m_objTweenStack.getIterator(IteratorType.ARRAY_REVERSE); var _local4:int = _arg1; while (_local4 <= _arg2) { while (_local3.hasNext()) { _local5 = (_local3.next() as ITween); if (!(_local5 is Action)){ _local5.renderFrame(_local4); }; }; _local3.reset(); _local4++; }; render(); } public function prevFrame():void{ setFrame((m_uFrame - 1)); } protected function onNextFrameEF(_arg1:Event):void{ nextFrame(); } public function gotoAndPlay(_arg1:uint):void{ stop(); setFrame(_arg1); play(); } public function stop():void{ m_objRendererPrev.stop(m_uRenderMethod); m_objRendererNext.stop(m_uRenderMethod); dispatchEvent(new AnimationEvent(AnimationEvent.STOP)); } public function playReverse():void{ stop(); dispatchEvent(new AnimationEvent(AnimationEvent.START)); m_objRendererPrev.start(m_uRenderMethod); } public function set loop(_arg1:Boolean):void{ m_bLoop = _arg1; } protected function init(_arg1:uint, _arg2:Number):void{ BoostworthyAnimation.log(); setFrameRate(_arg2); m_uRenderMethod = _arg1; m_objRendererPrev = new Renderer(onPrevFrameEF, onPrevFrameT, m_nRefreshRate); m_objRendererNext = new Renderer(onNextFrameEF, onNextFrameT, m_nRefreshRate); m_objTweenStack = new TweenStack(); m_uFrame = (m_uLength = 1); loop = DEFAULT_LOOP; } public function gotoAndStop(_arg1:uint):void{ stop(); setFrame(_arg1); } protected function onPrevFrameT(_arg1:TimerEvent):void{ prevFrame(); _arg1.updateAfterEvent(); } public function nextFrame():void{ setFrame((m_uFrame + 1)); } protected function render(_arg1:Boolean=false):void{ var _local2:IIterator = m_objTweenStack.getIterator((_arg1) ? IteratorType.ARRAY_REVERSE : IteratorType.ARRAY_FORWARD); while (_local2.hasNext()) { _local2.next().renderFrame(m_uFrame); }; } public function get loop():Boolean{ return (m_bLoop); } public function get length():Number{ return (m_uLength); } public function setFrameRate(_arg1:Number):void{ m_uFrameRate = ((_arg1)>0) ? _arg1 : DEFAULT_FRAME_RATE; m_nRefreshRate = Math.floor((1000 / m_uFrameRate)); } public function addTween(_arg1:ITween):void{ var _local2:ITween = _arg1.clone(); m_uLength = ((_local2.lastFrame)>m_uLength) ? _local2.lastFrame : m_uLength; m_objTweenStack.addElement(_local2); computeFrameData(_local2.firstFrame, _local2.lastFrame); } public function dispose():void{ stop(); m_objRendererPrev.dispose(); m_objRendererNext.dispose(); m_objTweenStack.dispose(); m_uRenderMethod = NaN; m_uFrameRate = NaN; m_nRefreshRate = NaN; m_uFrame = NaN; m_uLength = NaN; m_bLoop = false; } protected function onNextFrameT(_arg1:TimerEvent):void{ nextFrame(); _arg1.updateAfterEvent(); } protected function setFrame(_arg1:Number):void{ var _local2:Boolean; var _local3:Boolean; if (_arg1 > m_uLength){ if (m_bLoop){ _arg1 = 1; } else { _local3 = true; }; }; if (_arg1 < 1){ if (m_bLoop){ _arg1 = m_uLength; _local2 = true; } else { _local3 = true; }; }; m_uFrame = Math.min(Math.max(1, _arg1), m_uLength); if (!_local3){ render(_local2); }; dispatchEvent(new AnimationEvent(AnimationEvent.CHANGE)); if (_local3){ stop(); dispatchEvent(new AnimationEvent(AnimationEvent.FINISH)); }; } public function gotoAndPlayReverse(_arg1:uint):void{ stop(); setFrame(_arg1); playReverse(); } public function play():void{ stop(); dispatchEvent(new AnimationEvent(AnimationEvent.START)); m_objRendererNext.start(m_uRenderMethod); } protected function onPrevFrameEF(_arg1:Event):void{ prevFrame(); } } }//package com.boostworthy.animation.sequence
Section 220
//TweenStack (com.boostworthy.animation.sequence.TweenStack) package com.boostworthy.animation.sequence { import com.boostworthy.animation.sequence.tweens.*; import com.boostworthy.collections.iterators.*; import com.boostworthy.collections.*; public class TweenStack extends Stack { override public function addElement(_arg1:Object):void{ var _local7:ITween; var _local2:ITween = (_arg1 as ITween); var _local3:Array = new Array(); var _local4:IIterator = getIterator(); while (_local4.hasNext()) { _local7 = (_local4.next() as ITween); if ((((_local7.target == _local2.target)) && ((_local7.property == _local2.property)))){ if (_local7.firstFrame > _local2.firstFrame){ _local3.push(_local7.clone()); removeElement(_local7); }; }; }; super.addElement(_local2); var _local5:int = _local3.length; var _local6:int; while (_local6 < _local5) { super.addElement(_local3[_local6]); _local6++; }; } } }//package com.boostworthy.animation.sequence
Section 221
//BoostworthyAnimation (com.boostworthy.animation.BoostworthyAnimation) package com.boostworthy.animation { import com.boostworthy.utils.logger.*; public final class BoostworthyAnimation { public static const VERSION:String = "2.1"; public static const AUTHOR:String = "Copyright (c) 2007 Ryan Taylor | http://www.boostworthy.com"; public static const NAME:String = "Boostworthy Animation System"; public static const DATE:String = "06.07.2007"; private static var c_bIsLogged:Boolean; public static function log():void{ if (!c_bIsLogged){ LogFactory.getInstance().getLog(NAME).info(((("Version " + VERSION) + " :: ") + AUTHOR)); c_bIsLogged = true; }; } } }//package com.boostworthy.animation
Section 222
//ForwardArrayIterator (com.boostworthy.collections.iterators.ForwardArrayIterator) package com.boostworthy.collections.iterators { public class ForwardArrayIterator implements IIterator { private var m_aData:Array; private var m_uIndex:uint; public function ForwardArrayIterator(_arg1:Array){ m_aData = _arg1; reset(); } public function reset():void{ m_uIndex = 0; } public function next():Object{ return (m_aData[m_uIndex++]); } public function hasNext():Boolean{ return ((m_uIndex < m_aData.length)); } } }//package com.boostworthy.collections.iterators
Section 223
//IIterator (com.boostworthy.collections.iterators.IIterator) package com.boostworthy.collections.iterators { public interface IIterator { function next():Object; function hasNext():Boolean; function reset():void; } }//package com.boostworthy.collections.iterators
Section 224
//IteratorType (com.boostworthy.collections.iterators.IteratorType) package com.boostworthy.collections.iterators { public final class IteratorType { public static const NULL:uint = 1; public static const ARRAY_REVERSE:uint = 4; public static const ARRAY_FORWARD:uint = 2; } }//package com.boostworthy.collections.iterators
Section 225
//ReverseArrayIterator (com.boostworthy.collections.iterators.ReverseArrayIterator) package com.boostworthy.collections.iterators { public class ReverseArrayIterator implements IIterator { private var m_aData:Array; private var m_uIndex:uint; public function ReverseArrayIterator(_arg1:Array){ m_aData = _arg1; reset(); } public function reset():void{ m_uIndex = m_aData.length; } public function next():Object{ return (m_aData[--m_uIndex]); } public function hasNext():Boolean{ return ((m_uIndex > 0)); } } }//package com.boostworthy.collections.iterators
Section 226
//HashMap (com.boostworthy.collections.HashMap) package com.boostworthy.collections { import com.boostworthy.collections.iterators.*; import com.boostworthy.core.*; public class HashMap implements ICollection, IDisposable { protected var m_aKeys:Array; protected var m_aValues:Array; public function HashMap(_arg1:Object=null){ init(_arg1); } public function containsKey(_arg1:Object):Boolean{ return (!((searchForKey(_arg1) == Global.NULL_INDEX))); } public function remove(_arg1:Object):void{ var _local2:int = searchForKey(_arg1); if (_local2 != Global.NULL_INDEX){ m_aKeys.splice(_local2, 1); m_aValues.splice(_local2, 1); }; } public function getValueIterator(_arg1:uint=2):IIterator{ if (_arg1 == IteratorType.ARRAY_FORWARD){ return (new ForwardArrayIterator(m_aValues.concat())); }; if (_arg1 == IteratorType.ARRAY_REVERSE){ return (new ReverseArrayIterator(m_aValues.concat())); }; return (new ForwardArrayIterator(m_aValues.concat())); } public function getIterator(_arg1:uint=2):IIterator{ return (getValueIterator(_arg1)); } public function putMap(_arg1:Object):void{ var _local2:String; for (_local2 in _arg1) { put(_local2, _arg1[_local2]); }; } public function put(_arg1:Object, _arg2:Object):void{ remove(_arg1); m_aKeys.push(_arg1); m_aValues.push(_arg2); } protected function init(_arg1:Object):void{ dispose(); if (_arg1 != null){ putMap(_arg1); }; } public function get length():uint{ return (m_aKeys.length); } public function get(_arg1:Object):Object{ var _local2:int = searchForKey(_arg1); if (_local2 != Global.NULL_INDEX){ return (m_aValues[_local2]); }; return (null); } public function getKeyIterator(_arg1:uint=2):IIterator{ if (_arg1 == IteratorType.ARRAY_FORWARD){ return (new ForwardArrayIterator(m_aKeys.concat())); }; if (_arg1 == IteratorType.ARRAY_REVERSE){ return (new ReverseArrayIterator(m_aKeys.concat())); }; return (new ForwardArrayIterator(m_aKeys.concat())); } public function clone():HashMap{ var _local1:HashMap = new HashMap(); var _local2:int = m_aKeys.length; var _local3:int; while (_local3 < _local2) { _local1.put(m_aKeys[_local3], m_aValues[_local3]); _local3++; }; return (_local1); } protected function searchForKey(_arg1:Object):int{ var _local2:int = m_aKeys.length; var _local3:int; while (_local3 < _local2) { if (m_aKeys[_local3] === _arg1){ return (_local3); }; _local3++; }; return (Global.NULL_INDEX); } public function dispose():void{ m_aKeys = new Array(); m_aValues = new Array(); } } }//package com.boostworthy.collections
Section 227
//ICollection (com.boostworthy.collections.ICollection) package com.boostworthy.collections { import com.boostworthy.collections.iterators.*; public interface ICollection { function getIterator(_arg1:uint=2):IIterator; } }//package com.boostworthy.collections
Section 228
//Stack (com.boostworthy.collections.Stack) package com.boostworthy.collections { import com.boostworthy.collections.iterators.*; import com.boostworthy.core.*; public class Stack implements ICollection, IDisposable { protected var m_aData:Array; public function Stack(){ dispose(); } public function getIterator(_arg1:uint=2):IIterator{ if (_arg1 == IteratorType.ARRAY_FORWARD){ return (new ForwardArrayIterator(m_aData.concat())); }; if (_arg1 == IteratorType.ARRAY_REVERSE){ return (new ReverseArrayIterator(m_aData.concat())); }; return (new ForwardArrayIterator(m_aData.concat())); } private function getElementIndex(_arg1:Object):int{ var _local2:int; while (_local2 < m_aData.length) { if (m_aData[_local2] === _arg1){ return (_local2); }; _local2++; }; return (Global.NULL_INDEX); } public function get length():uint{ return (m_aData.length); } public function removeElement(_arg1:Object):void{ var _local2:int = getElementIndex(_arg1); if (_local2 != Global.NULL_INDEX){ m_aData.splice(_local2, 1); }; } public function addElement(_arg1:Object):void{ m_aData.unshift(_arg1); } public function dispose():void{ m_aData = new Array(); } } }//package com.boostworthy.collections
Section 229
//Global (com.boostworthy.core.Global) package com.boostworthy.core { import flash.display.*; public final class Global { private static var c_objStage:Stage; public static var NULL_INDEX:int = -1; public function Global(){ throw (new Error("ERROR -> Global :: Constructor :: The 'Global' class is not meant to be instantiated.")); } public static function set stage(_arg1:Stage):void{ c_objStage = _arg1; } public static function get stage():Stage{ return (c_objStage); } } }//package com.boostworthy.core
Section 230
//IDisposable (com.boostworthy.core.IDisposable) package com.boostworthy.core { public interface IDisposable { function dispose():void; } }//package com.boostworthy.core
Section 231
//AnimationEvent (com.boostworthy.events.AnimationEvent) package com.boostworthy.events { import flash.events.*; public class AnimationEvent extends Event { protected var m_strProperty:String; protected var m_objTarget:Object; public static const CHANGE:String = "animationChange"; public static const STOP:String = "animationStop"; public static const START:String = "animationStart"; public static const FINISH:String = "animationFinish"; public function AnimationEvent(_arg1:String, _arg2:Object=null, _arg3:String=""){ super(_arg1); m_objTarget = _arg2; m_strProperty = _arg3; } public function get animTarget():Object{ return (m_objTarget); } public function get animProperty():String{ return (m_strProperty); } } }//package com.boostworthy.events
Section 232
//ILog (com.boostworthy.utils.logger.ILog) package com.boostworthy.utils.logger { public interface ILog { function getName():String; function setLevel(_arg1:uint):void; function debug(_arg1:String):void; function severe(_arg1:String):void; function getLevel():uint; function warning(_arg1:String):void; function info(_arg1:String):void; } }//package com.boostworthy.utils.logger
Section 233
//Log (com.boostworthy.utils.logger.Log) package com.boostworthy.utils.logger { public class Log implements ILog { protected var m_strName:String; protected var m_uLevel:uint; public function Log(_arg1:String, _arg2:uint){ init(_arg1, _arg2); } protected function output(_arg1:String, _arg2:uint):void{ if (((!((m_uLevel & LogLevel.OFF))) && ((m_uLevel >= _arg2)))){ trace(createOutputMessage(_arg1, _arg2)); }; } public function getName():String{ return (m_strName); } public function setLevel(_arg1:uint):void{ m_uLevel = _arg1; } protected function createOutputMessage(_arg1:String, _arg2:uint):String{ return ((((((m_strName + " (") + getLevelName(_arg2)) + ") :: ") + _arg1) + "\n")); } public function getLevel():uint{ return (m_uLevel); } protected function init(_arg1:String, _arg2:uint):void{ m_strName = _arg1; m_uLevel = _arg2; } protected function getLevelName(_arg1:uint):String{ switch (_arg1){ case LogLevel.OFF: return ("OFF"); case LogLevel.SEVERE: return ("SEVERE"); case LogLevel.WARNING: return ("WARNING"); case LogLevel.INFO: return ("INFO"); case LogLevel.DEBUG: return ("DEBUG"); default: return (""); }; } public function debug(_arg1:String):void{ output(_arg1, LogLevel.DEBUG); } public function severe(_arg1:String):void{ output(_arg1, LogLevel.SEVERE); } public function warning(_arg1:String):void{ output(_arg1, LogLevel.WARNING); } public function info(_arg1:String):void{ output(_arg1, LogLevel.INFO); } } }//package com.boostworthy.utils.logger
Section 234
//LogFactory (com.boostworthy.utils.logger.LogFactory) package com.boostworthy.utils.logger { import com.boostworthy.collections.iterators.*; import com.boostworthy.collections.*; import com.boostworthy.core.*; public class LogFactory implements IDisposable { private var m_uLevel:uint; private var m_objLogHash:HashMap; private static var c_objInstance:LogFactory; public function LogFactory(_arg1:SingletonEnforcer){ init(); } protected function init():void{ m_uLevel = LogSettings.DEFAULT_LOG_LEVEL; m_objLogHash = new HashMap(); } public function getLog(_arg1:String):ILog{ if (m_objLogHash.containsKey(_arg1)){ return ((m_objLogHash.get(_arg1) as ILog)); }; m_objLogHash.put(_arg1, new Log(_arg1, m_uLevel)); return ((m_objLogHash.get(_arg1) as ILog)); } public function setLevel(_arg1:uint):void{ m_uLevel = _arg1; var _local2:IIterator = m_objLogHash.getValueIterator(); while (_local2.hasNext()) { _local2.next().setLevel(m_uLevel); }; } public function getLevel():uint{ return (m_uLevel); } public function dispose():void{ m_objLogHash.dispose(); } public static function getInstance():LogFactory{ if (c_objInstance == null){ c_objInstance = new LogFactory(new SingletonEnforcer()); }; return (c_objInstance); } } }//package com.boostworthy.utils.logger class SingletonEnforcer { private function SingletonEnforcer(){ } }
Section 235
//LogLevel (com.boostworthy.utils.logger.LogLevel) package com.boostworthy.utils.logger { public final class LogLevel { public static const SEVERE:uint = 2; public static const INFO:uint = 8; public static const DEBUG:uint = 16; public static const WARNING:uint = 4; public static const OFF:uint = 1; } }//package com.boostworthy.utils.logger
Section 236
//LogSettings (com.boostworthy.utils.logger.LogSettings) package com.boostworthy.utils.logger { public final class LogSettings { public static const DEFAULT_LOG_LEVEL:uint = 16; } }//package com.boostworthy.utils.logger
Section 237
//Color (fl.motion.Color) package fl.motion { import flash.display.*; import flash.geom.*; public class Color extends ColorTransform { private var _tintColor:Number;// = 0 private var _tintMultiplier: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){ super(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7, _arg8); } private function deriveTintColor():uint{ var _local1:Number = (1 / this.tintMultiplier); var _local2:uint = Math.round((this.redOffset * _local1)); var _local3:uint = Math.round((this.greenOffset * _local1)); var _local4:uint = Math.round((this.blueOffset * _local1)); var _local5:uint = (((_local2 << 16) | (_local3 << 8)) | _local4); return (_local5); } public function set brightness(_arg1:Number):void{ if (_arg1 > 1){ _arg1 = 1; } else { if (_arg1 < -1){ _arg1 = -1; }; }; var _local2:Number = (1 - Math.abs(_arg1)); var _local3:Number = 0; if (_arg1 > 0){ _local3 = (_arg1 * 0xFF); }; this.redMultiplier = (this.greenMultiplier = (this.blueMultiplier = _local2)); this.redOffset = (this.greenOffset = (this.blueOffset = _local3)); } private function parseXML(_arg1:XML=null):Color{ var _local3:XML; var _local4:String; var _local5:uint; if (!_arg1){ return (this); }; var _local2:XML = _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 function get tintColor():uint{ return (this._tintColor); } 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)); } public function set tintMultiplier(_arg1:Number):void{ this.setTint(this.tintColor, _arg1); } public function get tintMultiplier():Number{ return (this._tintMultiplier); } public function setTint(_arg1:uint, _arg2:Number):void{ this._tintColor = _arg1; this._tintMultiplier = _arg2; this.redMultiplier = (this.greenMultiplier = (this.blueMultiplier = (1 - _arg2))); var _local3:uint = ((_arg1 >> 16) & 0xFF); var _local4:uint = ((_arg1 >> 8) & 0xFF); var _local5:uint = (_arg1 & 0xFF); this.redOffset = Math.round((_local3 * _arg2)); this.greenOffset = Math.round((_local4 * _arg2)); this.blueOffset = Math.round((_local5 * _arg2)); } public static function interpolateColor(_arg1:uint, _arg2:uint, _arg3:Number):uint{ var _local4:Number = (1 - _arg3); var _local5:uint = ((_arg1 >> 24) & 0xFF); var _local6:uint = ((_arg1 >> 16) & 0xFF); var _local7:uint = ((_arg1 >> 8) & 0xFF); var _local8:uint = (_arg1 & 0xFF); var _local9:uint = ((_arg2 >> 24) & 0xFF); var _local10:uint = ((_arg2 >> 16) & 0xFF); var _local11:uint = ((_arg2 >> 8) & 0xFF); var _local12:uint = (_arg2 & 0xFF); var _local13:uint = ((_local5 * _local4) + (_local9 * _arg3)); var _local14:uint = ((_local6 * _local4) + (_local10 * _arg3)); var _local15:uint = ((_local7 * _local4) + (_local11 * _arg3)); var _local16:uint = ((_local8 * _local4) + (_local12 * _arg3)); var _local17:uint = ((((_local13 << 24) | (_local14 << 16)) | (_local15 << 8)) | _local16); return (_local17); } public static function interpolateTransform(_arg1:ColorTransform, _arg2:ColorTransform, _arg3:Number):ColorTransform{ var _local4:Number = (1 - _arg3); var _local5:ColorTransform = 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 238
//ByteArrayAsset (mx.core.ByteArrayAsset) package mx.core { import flash.utils.*; public class ByteArrayAsset extends ByteArray implements IFlexAsset { mx_internal static const VERSION:String = "3.3.0.4852"; } }//package mx.core
Section 239
//IFlexAsset (mx.core.IFlexAsset) package mx.core { public interface IFlexAsset { } }//package mx.core
Section 240
//mx_internal (mx.core.mx_internal) package mx.core { public namespace mx_internal = "http://www.adobe.com/2006/flex/mx/internal"; }//package mx.core
Section 241
//logo_2 (Preloader_2DPlay_fla.logo_2) package Preloader_2DPlay_fla { import flash.display.*; public dynamic class logo_2 extends MovieClip { public var animation:MovieClip; public var progressBar:MovieClip; } }//package Preloader_2DPlay_fla
Section 242
//preloader_progress_bar_4 (Preloader_2DPlay_fla.preloader_progress_bar_4) package Preloader_2DPlay_fla { import flash.display.*; public dynamic class preloader_progress_bar_4 extends MovieClip { public var progressBarMask:MovieClip; } }//package Preloader_2DPlay_fla
Section 243
//BlastAnimation (BlastAnimation) package { import flash.display.*; public dynamic class BlastAnimation extends MovieClip { } }//package
Section 244
//BombButtonIcon_1 (BombButtonIcon_1) package { import flash.display.*; public dynamic class BombButtonIcon_1 extends Sprite { } }//package
Section 245
//BombButtonIcon_2 (BombButtonIcon_2) package { import flash.display.*; public dynamic class BombButtonIcon_2 extends Sprite { } }//package
Section 246
//BombButtonIcon_3 (BombButtonIcon_3) package { import flash.display.*; public dynamic class BombButtonIcon_3 extends Sprite { } }//package
Section 247
//BombClip (BombClip) package { import flash.display.*; public dynamic class BombClip extends MovieClip { } }//package
Section 248
//BUTTON_UI (BUTTON_UI) package { import flash.media.*; public dynamic class BUTTON_UI extends Sound { } }//package
Section 249
//ButtonBackground (ButtonBackground) package { import flash.display.*; public dynamic class ButtonBackground extends Sprite { } }//package
Section 250
//click_1 (click_1) package { import flash.media.*; public dynamic class click_1 extends Sound { } }//package
Section 251
//click_2 (click_2) package { import flash.media.*; public dynamic class click_2 extends Sound { } }//package
Section 252
//DecreaseTimeButtonIcon (DecreaseTimeButtonIcon) package { import flash.display.*; public dynamic class DecreaseTimeButtonIcon extends Sprite { } }//package
Section 253
//DeleteButtonIcon (DeleteButtonIcon) package { import flash.display.*; public dynamic class DeleteButtonIcon extends Sprite { } }//package
Section 254
//DetonateBtnOverIcon (DetonateBtnOverIcon) package { import flash.display.*; public dynamic class DetonateBtnOverIcon extends Sprite { } }//package
Section 255
//DetonateBtnUpIcon (DetonateBtnUpIcon) package { import flash.display.*; public dynamic class DetonateBtnUpIcon extends Sprite { } }//package
Section 256
//DRM_ROLL_CRASH (DRM_ROLL_CRASH) package { import flash.media.*; public dynamic class DRM_ROLL_CRASH extends Sound { } }//package
Section 257
//explosion_0 (explosion_0) package { import flash.media.*; public dynamic class explosion_0 extends Sound { } }//package
Section 258
//explosion_1 (explosion_1) package { import flash.media.*; public dynamic class explosion_1 extends Sound { } }//package
Section 259
//explosion_2 (explosion_2) package { import flash.media.*; public dynamic class explosion_2 extends Sound { } }//package
Section 260
//explosion_3 (explosion_3) package { import flash.media.*; public dynamic class explosion_3 extends Sound { } }//package
Section 261
//ExplosionAnimation (ExplosionAnimation) package { import flash.display.*; public dynamic class ExplosionAnimation extends MovieClip { } }//package
Section 262
//Font_1 (Font_1) package { import flash.text.*; public dynamic class Font_1 extends Font { } }//package
Section 263
//GameViewBackground (GameViewBackground) package { import flash.display.*; public dynamic class GameViewBackground extends Sprite { } }//package
Section 264
//GameWonViewBackground (GameWonViewBackground) package { import flash.display.*; public dynamic class GameWonViewBackground extends Sprite { } }//package
Section 265
//GaugeBackground (GaugeBackground) package { import flash.display.*; public dynamic class GaugeBackground extends Sprite { public var _arrow:MovieClip; } }//package
Section 266
//GLASS_THROWN (GLASS_THROWN) package { import flash.media.*; public dynamic class GLASS_THROWN extends Sound { } }//package
Section 267
//hit_0 (hit_0) package { import flash.media.*; public dynamic class hit_0 extends Sound { } }//package
Section 268
//hit_1 (hit_1) package { import flash.media.*; public dynamic class hit_1 extends Sound { } }//package
Section 269
//hit_2 (hit_2) package { import flash.media.*; public dynamic class hit_2 extends Sound { } }//package
Section 270
//hit_3 (hit_3) package { import flash.media.*; public dynamic class hit_3 extends Sound { } }//package
Section 271
//hit_4 (hit_4) package { import flash.media.*; public dynamic class hit_4 extends Sound { } }//package
Section 272
//hit_5 (hit_5) package { import flash.media.*; public dynamic class hit_5 extends Sound { } }//package
Section 273
//hit_6 (hit_6) package { import flash.media.*; public dynamic class hit_6 extends Sound { } }//package
Section 274
//hit_7 (hit_7) package { import flash.media.*; public dynamic class hit_7 extends Sound { } }//package
Section 275
//hit_8 (hit_8) package { import flash.media.*; public dynamic class hit_8 extends Sound { } }//package
Section 276
//hit_9 (hit_9) package { import flash.media.*; public dynamic class hit_9 extends Sound { } }//package
Section 277
//HUDBackground (HUDBackground) package { import flash.display.*; public dynamic class HUDBackground extends Sprite { } }//package
Section 278
//IncreaseTimeButtonIcon (IncreaseTimeButtonIcon) package { import flash.display.*; public dynamic class IncreaseTimeButtonIcon extends Sprite { } }//package
Section 279
//InstructionsViewBackground (InstructionsViewBackground) package { import flash.display.*; public dynamic class InstructionsViewBackground extends Sprite { } }//package
Section 280
//LevelButtonIcon (LevelButtonIcon) package { import flash.display.*; public dynamic class LevelButtonIcon extends Sprite { } }//package
Section 281
//LevelButtonLockedIcon (LevelButtonLockedIcon) package { import flash.display.*; public dynamic class LevelButtonLockedIcon extends Sprite { } }//package
Section 282
//LevelCompleteViewBackground (LevelCompleteViewBackground) package { import flash.display.*; public dynamic class LevelCompleteViewBackground extends MovieClip { } }//package
Section 283
//LevelSelectionBackground (LevelSelectionBackground) package { import flash.display.*; public dynamic class LevelSelectionBackground extends Sprite { } }//package
Section 284
//MainMenuBackground (MainMenuBackground) package { import flash.display.*; public dynamic class MainMenuBackground extends Sprite { } }//package
Section 285
//MenuBtnOverIcon (MenuBtnOverIcon) package { import flash.display.*; public dynamic class MenuBtnOverIcon extends Sprite { } }//package
Section 286
//MenuBtnUpIcon (MenuBtnUpIcon) package { import flash.display.*; public dynamic class MenuBtnUpIcon extends Sprite { } }//package
Section 287
//PauseMenuViewBackground (PauseMenuViewBackground) package { import flash.display.*; public dynamic class PauseMenuViewBackground extends Sprite { } }//package
Section 288
//ResetBtnOverIcon (ResetBtnOverIcon) package { import flash.display.*; public dynamic class ResetBtnOverIcon extends Sprite { } }//package
Section 289
//ResetBtnUpIcon (ResetBtnUpIcon) package { import flash.display.*; public dynamic class ResetBtnUpIcon extends Sprite { } }//package
Section 290
//ResetGamePopupBackground (ResetGamePopupBackground) package { import flash.display.*; public dynamic class ResetGamePopupBackground extends Sprite { } }//package
Section 291
//Texture_1 (Texture_1) package { import flash.display.*; public dynamic class Texture_1 extends BitmapData { public function Texture_1(_arg1:Number, _arg2:Number){ super(_arg1, _arg2); } } }//package
Section 292
//Texture_2 (Texture_2) package { import flash.display.*; public dynamic class Texture_2 extends BitmapData { public function Texture_2(_arg1:Number, _arg2:Number){ super(_arg1, _arg2); } } }//package
Section 293
//TimerClip (TimerClip) package { import flash.display.*; public dynamic class TimerClip extends MovieClip { } }//package
Section 294
//TRUMPET_BLAST (TRUMPET_BLAST) package { import flash.media.*; public dynamic class TRUMPET_BLAST extends Sound { } }//package
Section 295
//TwoDPlayButtonIcon (TwoDPlayButtonIcon) package { import flash.display.*; public dynamic class TwoDPlayButtonIcon extends Sprite { } }//package

Library Items

Symbol 1 ShapeTweeningUsed by:75
Symbol 2 GraphicUsed by:75
Symbol 3 SoundUsed by:75
Symbol 4 GraphicUsed by:75
Symbol 5 GraphicUsed by:75
Symbol 6 GraphicUsed by:75
Symbol 7 GraphicUsed by:75
Symbol 8 GraphicUsed by:75
Symbol 9 GraphicUsed by:75
Symbol 10 GraphicUsed by:75
Symbol 11 GraphicUsed by:75
Symbol 12 GraphicUsed by:75
Symbol 13 GraphicUsed by:75
Symbol 14 GraphicUsed by:75
Symbol 15 GraphicUsed by:75
Symbol 16 GraphicUsed by:75
Symbol 17 GraphicUsed by:75
Symbol 18 GraphicUsed by:75
Symbol 19 GraphicUsed by:75
Symbol 20 GraphicUsed by:75
Symbol 21 GraphicUsed by:75
Symbol 22 GraphicUsed by:75
Symbol 23 GraphicUsed by:75
Symbol 24 GraphicUsed by:75
Symbol 25 GraphicUsed by:75
Symbol 26 GraphicUsed by:75
Symbol 27 GraphicUsed by:75
Symbol 28 GraphicUsed by:75
Symbol 29 GraphicUsed by:75
Symbol 30 GraphicUsed by:75
Symbol 31 GraphicUsed by:75
Symbol 32 GraphicUsed by:75
Symbol 33 GraphicUsed by:75
Symbol 34 GraphicUsed by:75
Symbol 35 GraphicUsed by:75
Symbol 36 GraphicUsed by:75
Symbol 37 GraphicUsed by:75
Symbol 38 GraphicUsed by:75
Symbol 39 GraphicUsed by:75
Symbol 40 GraphicUsed by:75
Symbol 41 GraphicUsed by:75
Symbol 42 GraphicUsed by:75
Symbol 43 GraphicUsed by:75
Symbol 44 GraphicUsed by:75
Symbol 45 GraphicUsed by:75
Symbol 46 GraphicUsed by:75
Symbol 47 GraphicUsed by:75
Symbol 48 GraphicUsed by:75
Symbol 49 GraphicUsed by:75
Symbol 50 GraphicUsed by:75
Symbol 51 GraphicUsed by:75
Symbol 52 GraphicUsed by:75
Symbol 53 GraphicUsed by:75
Symbol 54 GraphicUsed by:75
Symbol 55 GraphicUsed by:75
Symbol 56 GraphicUsed by:75
Symbol 57 GraphicUsed by:75
Symbol 58 GraphicUsed by:75
Symbol 59 SoundUsed by:75
Symbol 60 GraphicUsed by:75
Symbol 61 GraphicUsed by:75
Symbol 62 ShapeTweeningUsed by:75
Symbol 63 GraphicUsed by:75
Symbol 64 GraphicUsed by:75
Symbol 65 SoundUsed by:75
Symbol 66 GraphicUsed by:75
Symbol 67 SoundUsed by:75
Symbol 68 GraphicUsed by:75
Symbol 69 GraphicUsed by:75
Symbol 70 GraphicUsed by:75
Symbol 71 GraphicUsed by:75
Symbol 72 GraphicUsed by:75
Symbol 73 SoundUsed by:75
Symbol 74 GraphicUsed by:75
Symbol 75 MovieClipUses:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74Used by:82
Symbol 76 GraphicUsed by:81
Symbol 77 GraphicUsed by:78
Symbol 78 MovieClipUses:77Used by:81
Symbol 79 GraphicUsed by:81
Symbol 80 GraphicUsed by:81
Symbol 81 MovieClip {Preloader_2DPlay_fla.preloader_progress_bar_4} [Preloader_2DPlay_fla.preloader_progress_bar_4]Uses:76 78 79 80Used by:82
Symbol 82 MovieClip {Preloader_2DPlay_fla.logo_2} [Preloader_2DPlay_fla.logo_2]Uses:75 81Used by:83
Symbol 83 MovieClip {com.bigwigmedia.preloaders.Preloader_2DPlay} [com.bigwigmedia.preloaders.Preloader_2DPlay]Uses:82
Symbol 84 Font {Font_1} [Font_1]
Symbol 85 Sound {TRUMPET_BLAST} [TRUMPET_BLAST]
Symbol 86 Sound {explosion_2} [explosion_2]
Symbol 87 Sound {explosion_3} [explosion_3]
Symbol 88 Sound {explosion_0} [explosion_0]
Symbol 89 Sound {explosion_1} [explosion_1]
Symbol 90 Sound {BUTTON_UI} [BUTTON_UI]
Symbol 91 Sound {DRM_ROLL_CRASH} [DRM_ROLL_CRASH]
Symbol 92 Sound {hit_4} [hit_4]
Symbol 93 Sound {hit_5} [hit_5]
Symbol 94 Sound {hit_6} [hit_6]
Symbol 95 Sound {hit_7} [hit_7]
Symbol 96 Sound {hit_8} [hit_8]
Symbol 97 Sound {hit_9} [hit_9]
Symbol 98 Sound {hit_0} [hit_0]
Symbol 99 Sound {click_2} [click_2]
Symbol 100 Sound {click_1} [click_1]
Symbol 101 Sound {hit_1} [hit_1]
Symbol 102 Sound {hit_2} [hit_2]
Symbol 103 Sound {hit_3} [hit_3]
Symbol 104 Sound {GLASS_THROWN} [GLASS_THROWN]
Symbol 105 BitmapUsed by:106
Symbol 106 GraphicUses:105Used by:107
Symbol 107 MovieClip {GameWonViewBackground} [GameWonViewBackground]Uses:106
Symbol 108 GraphicUsed by:109
Symbol 109 MovieClip {TwoDPlayButtonIcon} [TwoDPlayButtonIcon]Uses:108
Symbol 110 BitmapUsed by:111
Symbol 111 GraphicUses:110Used by:112
Symbol 112 MovieClip {InstructionsViewBackground} [InstructionsViewBackground]Uses:111
Symbol 113 BitmapUsed by:114
Symbol 114 GraphicUses:113Used by:115
Symbol 115 MovieClip {MainMenuBackground} [MainMenuBackground]Uses:114
Symbol 116 BitmapUsed by:117
Symbol 117 GraphicUses:116Used by:118
Symbol 118 MovieClip {LevelSelectionBackground} [LevelSelectionBackground]Uses:117
Symbol 119 ShapeTweeningUsed by:123
Symbol 120 GraphicUsed by:123
Symbol 121 GraphicUsed by:123
Symbol 122 GraphicUsed by:123
Symbol 123 MovieClip {ExplosionAnimation} [ExplosionAnimation]Uses:119 120 121 122
Symbol 124 BitmapUsed by:125
Symbol 125 GraphicUses:124Used by:126
Symbol 126 MovieClip {GameViewBackground} [GameViewBackground]Uses:125
Symbol 127 BitmapUsed by:128
Symbol 128 GraphicUses:127Used by:157
Symbol 129 BitmapUsed by:130
Symbol 130 GraphicUses:129Used by:157
Symbol 131 BitmapUsed by:132
Symbol 132 GraphicUses:131Used by:157
Symbol 133 BitmapUsed by:134
Symbol 134 GraphicUses:133Used by:157
Symbol 135 BitmapUsed by:136
Symbol 136 GraphicUses:135Used by:157
Symbol 137 BitmapUsed by:138
Symbol 138 GraphicUses:137Used by:157
Symbol 139 BitmapUsed by:140
Symbol 140 GraphicUses:139Used by:157
Symbol 141 BitmapUsed by:142
Symbol 142 GraphicUses:141Used by:157
Symbol 143 BitmapUsed by:144
Symbol 144 GraphicUses:143Used by:157
Symbol 145 BitmapUsed by:146
Symbol 146 GraphicUses:145Used by:157
Symbol 147 BitmapUsed by:148
Symbol 148 GraphicUses:147Used by:157
Symbol 149 BitmapUsed by:150
Symbol 150 GraphicUses:149Used by:157
Symbol 151 BitmapUsed by:152
Symbol 152 GraphicUses:151Used by:157
Symbol 153 BitmapUsed by:154
Symbol 154 GraphicUses:153Used by:157
Symbol 155 BitmapUsed by:156
Symbol 156 GraphicUses:155Used by:157
Symbol 157 MovieClip {BlastAnimation} [BlastAnimation]Uses:128 130 132 134 136 138 140 142 144 146 148 150 152 154 156
Symbol 158 GraphicUsed by:162
Symbol 159 GraphicUsed by:162
Symbol 160 GraphicUsed by:162
Symbol 161 GraphicUsed by:162
Symbol 162 MovieClip {BombClip} [BombClip]Uses:158 159 160 161
Symbol 163 GraphicUsed by:164
Symbol 164 MovieClip {DeleteButtonIcon} [DeleteButtonIcon]Uses:163
Symbol 165 GraphicUsed by:166
Symbol 166 MovieClip {IncreaseTimeButtonIcon} [IncreaseTimeButtonIcon]Uses:165
Symbol 167 GraphicUsed by:174
Symbol 168 FontUsed by:169 170 171 172 173
Symbol 169 TextUses:168Used by:174
Symbol 170 TextUses:168Used by:174
Symbol 171 TextUses:168Used by:174
Symbol 172 TextUses:168Used by:174
Symbol 173 TextUses:168Used by:174
Symbol 174 MovieClip {TimerClip} [TimerClip]Uses:167 169 170 171 172 173
Symbol 175 GraphicUsed by:176
Symbol 176 MovieClip {DecreaseTimeButtonIcon} [DecreaseTimeButtonIcon]Uses:175
Symbol 177 BitmapUsed by:178
Symbol 178 GraphicUses:177Used by:179
Symbol 179 MovieClip {ButtonBackground} [ButtonBackground]Uses:178
Symbol 180 BitmapUsed by:181
Symbol 181 GraphicUses:180Used by:182 199
Symbol 182 MovieClip {ResetGamePopupBackground} [ResetGamePopupBackground]Uses:181
Symbol 183 BitmapUsed by:185
Symbol 184 BitmapUsed by:185 187
Symbol 185 GraphicUses:183 184Used by:186
Symbol 186 MovieClip {LevelButtonLockedIcon} [LevelButtonLockedIcon]Uses:185
Symbol 187 GraphicUses:184Used by:188
Symbol 188 MovieClip {LevelButtonIcon} [LevelButtonIcon]Uses:187
Symbol 189 GraphicUsed by:198
Symbol 190 FontUsed by:191 192 193 194
Symbol 191 TextUses:190Used by:198
Symbol 192 TextUses:190Used by:198
Symbol 193 TextUses:190Used by:198
Symbol 194 TextUses:190Used by:198
Symbol 195 GraphicUsed by:198
Symbol 196 GraphicUsed by:197
Symbol 197 MovieClipUses:196Used by:198
Symbol 198 MovieClip {GaugeBackground} [GaugeBackground]Uses:189 191 192 193 194 195 197
Symbol 199 MovieClip {PauseMenuViewBackground} [PauseMenuViewBackground]Uses:181
Symbol 200 Bitmap {Texture_1} [Texture_1]
Symbol 201 Bitmap {Texture_2} [Texture_2]
Symbol 202 BitmapUsed by:203
Symbol 203 GraphicUses:202Used by:204
Symbol 204 MovieClip {HUDBackground} [HUDBackground]Uses:203
Symbol 205 BitmapUsed by:206
Symbol 206 GraphicUses:205Used by:207
Symbol 207 MovieClip {MenuBtnOverIcon} [MenuBtnOverIcon]Uses:206
Symbol 208 GraphicUsed by:209 210 217
Symbol 209 MovieClip {ResetBtnUpIcon} [ResetBtnUpIcon]Uses:208
Symbol 210 MovieClip {DetonateBtnUpIcon} [DetonateBtnUpIcon]Uses:208
Symbol 211 BitmapUsed by:212
Symbol 212 GraphicUses:211Used by:213
Symbol 213 MovieClip {ResetBtnOverIcon} [ResetBtnOverIcon]Uses:212
Symbol 214 BitmapUsed by:215
Symbol 215 GraphicUses:214Used by:216
Symbol 216 MovieClip {DetonateBtnOverIcon} [DetonateBtnOverIcon]Uses:215
Symbol 217 MovieClip {MenuBtnUpIcon} [MenuBtnUpIcon]Uses:208
Symbol 218 BitmapUsed by:219
Symbol 219 GraphicUses:218Used by:222
Symbol 220 BitmapUsed by:221
Symbol 221 GraphicUses:220Used by:222
Symbol 222 MovieClip {LevelCompleteViewBackground} [LevelCompleteViewBackground]Uses:219 221
Symbol 223 GraphicUsed by:224
Symbol 224 MovieClip {BombButtonIcon_2} [BombButtonIcon_2]Uses:223
Symbol 225 GraphicUsed by:226
Symbol 226 MovieClip {BombButtonIcon_3} [BombButtonIcon_3]Uses:225
Symbol 227 GraphicUsed by:228
Symbol 228 MovieClip {BombButtonIcon_1} [BombButtonIcon_1]Uses:227
Symbol 229 BinaryData {bblaster.managers.ConfigManager_levelsXMLClass}
Symbol 230 BinaryData {bblaster.managers.ConfigManager_configXMLClass}

Instance Names

"progressBarMask"Symbol 81 MovieClip {Preloader_2DPlay_fla.preloader_progress_bar_4} [Preloader_2DPlay_fla.preloader_progress_bar_4] Frame 1Symbol 78 MovieClip
"animation"Symbol 82 MovieClip {Preloader_2DPlay_fla.logo_2} [Preloader_2DPlay_fla.logo_2] Frame 1Symbol 75 MovieClip
"progressBar"Symbol 82 MovieClip {Preloader_2DPlay_fla.logo_2} [Preloader_2DPlay_fla.logo_2] Frame 1Symbol 81 MovieClip {Preloader_2DPlay_fla.preloader_progress_bar_4} [Preloader_2DPlay_fla.preloader_progress_bar_4]
"_logo"Symbol 83 MovieClip {com.bigwigmedia.preloaders.Preloader_2DPlay} [com.bigwigmedia.preloaders.Preloader_2DPlay] Frame 1Symbol 82 MovieClip {Preloader_2DPlay_fla.logo_2} [Preloader_2DPlay_fla.logo_2]
"_arrow"Symbol 198 MovieClip {GaugeBackground} [GaugeBackground] Frame 1Symbol 197 MovieClip

Special Tags

FileAttributes (69)Timeline Frame 1Access network only, Metadata present, AS3.
SWFMetaData (77)Timeline Frame 1458 bytes "<rdf:RDF xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#'><rdf:Description rdf:about='' xmlns ..."
ScriptLimits (65)Timeline Frame 1MaxRecursionDepth: 1000, ScriptTimeout: 60 seconds
ExportAssets (56)Timeline Frame 1Symbol 83 as "com.bigwigmedia.preloaders.Preloader_2DPlay"
ExportAssets (56)Timeline Frame 1Symbol 82 as "Preloader_2DPlay_fla.logo_2"
ExportAssets (56)Timeline Frame 1Symbol 81 as "Preloader_2DPlay_fla.preloader_progress_bar_4"
ExportAssets (56)Timeline Frame 2Symbol 84 as "Font_1"
ExportAssets (56)Timeline Frame 2Symbol 85 as "TRUMPET_BLAST"
ExportAssets (56)Timeline Frame 2Symbol 86 as "explosion_2"
ExportAssets (56)Timeline Frame 2Symbol 87 as "explosion_3"
ExportAssets (56)Timeline Frame 2Symbol 88 as "explosion_0"
ExportAssets (56)Timeline Frame 2Symbol 89 as "explosion_1"
ExportAssets (56)Timeline Frame 2Symbol 90 as "BUTTON_UI"
ExportAssets (56)Timeline Frame 2Symbol 91 as "DRM_ROLL_CRASH"
ExportAssets (56)Timeline Frame 2Symbol 92 as "hit_4"
ExportAssets (56)Timeline Frame 2Symbol 93 as "hit_5"
ExportAssets (56)Timeline Frame 2Symbol 94 as "hit_6"
ExportAssets (56)Timeline Frame 2Symbol 95 as "hit_7"
ExportAssets (56)Timeline Frame 2Symbol 96 as "hit_8"
ExportAssets (56)Timeline Frame 2Symbol 97 as "hit_9"
ExportAssets (56)Timeline Frame 2Symbol 98 as "hit_0"
ExportAssets (56)Timeline Frame 2Symbol 99 as "click_2"
ExportAssets (56)Timeline Frame 2Symbol 100 as "click_1"
ExportAssets (56)Timeline Frame 2Symbol 101 as "hit_1"
ExportAssets (56)Timeline Frame 2Symbol 102 as "hit_2"
ExportAssets (56)Timeline Frame 2Symbol 103 as "hit_3"
ExportAssets (56)Timeline Frame 2Symbol 104 as "GLASS_THROWN"
ExportAssets (56)Timeline Frame 2Symbol 107 as "GameWonViewBackground"
ExportAssets (56)Timeline Frame 2Symbol 109 as "TwoDPlayButtonIcon"
ExportAssets (56)Timeline Frame 2Symbol 112 as "InstructionsViewBackground"
ExportAssets (56)Timeline Frame 2Symbol 115 as "MainMenuBackground"
ExportAssets (56)Timeline Frame 2Symbol 118 as "LevelSelectionBackground"
ExportAssets (56)Timeline Frame 2Symbol 123 as "ExplosionAnimation"
ExportAssets (56)Timeline Frame 2Symbol 126 as "GameViewBackground"
ExportAssets (56)Timeline Frame 2Symbol 157 as "BlastAnimation"
ExportAssets (56)Timeline Frame 2Symbol 162 as "BombClip"
ExportAssets (56)Timeline Frame 2Symbol 164 as "DeleteButtonIcon"
ExportAssets (56)Timeline Frame 2Symbol 166 as "IncreaseTimeButtonIcon"
ExportAssets (56)Timeline Frame 2Symbol 174 as "TimerClip"
ExportAssets (56)Timeline Frame 2Symbol 176 as "DecreaseTimeButtonIcon"
ExportAssets (56)Timeline Frame 2Symbol 179 as "ButtonBackground"
ExportAssets (56)Timeline Frame 2Symbol 182 as "ResetGamePopupBackground"
ExportAssets (56)Timeline Frame 2Symbol 186 as "LevelButtonLockedIcon"
ExportAssets (56)Timeline Frame 2Symbol 188 as "LevelButtonIcon"
ExportAssets (56)Timeline Frame 2Symbol 198 as "GaugeBackground"
ExportAssets (56)Timeline Frame 2Symbol 199 as "PauseMenuViewBackground"
ExportAssets (56)Timeline Frame 2Symbol 200 as "Texture_1"
ExportAssets (56)Timeline Frame 2Symbol 201 as "Texture_2"
ExportAssets (56)Timeline Frame 2Symbol 204 as "HUDBackground"
ExportAssets (56)Timeline Frame 2Symbol 207 as "MenuBtnOverIcon"
ExportAssets (56)Timeline Frame 2Symbol 209 as "ResetBtnUpIcon"
ExportAssets (56)Timeline Frame 2Symbol 210 as "DetonateBtnUpIcon"
ExportAssets (56)Timeline Frame 2Symbol 213 as "ResetBtnOverIcon"
ExportAssets (56)Timeline Frame 2Symbol 216 as "DetonateBtnOverIcon"
ExportAssets (56)Timeline Frame 2Symbol 217 as "MenuBtnUpIcon"
ExportAssets (56)Timeline Frame 2Symbol 222 as "LevelCompleteViewBackground"
ExportAssets (56)Timeline Frame 2Symbol 224 as "BombButtonIcon_2"
ExportAssets (56)Timeline Frame 2Symbol 226 as "BombButtonIcon_3"
ExportAssets (56)Timeline Frame 2Symbol 228 as "BombButtonIcon_1"
SerialNumber (41)Timeline Frame 1

Labels

"bblaster_Main"Frame 1
"start"Frame 2




http://swfchan.com/19/92960/info.shtml
Created: 27/3 -2019 04:47:03 Last modified: 27/3 -2019 04:47:03 Server time: 19/04 -2024 03:16:32