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

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

Puzzle & Brain & Match 3 - Through Walls.swf

This is the info page for
Flash #232980

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


Text
LIVES:

SCORES:

3

3

ON

PAUSE

PAUSE

SOUND

SOUND

QUIT

QUIT

THROUGH WALLS

START

START

CONTINUE

CONTINUE

TIME MODE

CREDITS

CREDITS

DEVELOPMENT

KORNUSHIN.COM

SOUNDS

3D ENGINE

SANDY

SOUNDSNAP.COM

HIGHSCORES

HIGHSCORES

MORE GAMES

MEER SPELLEN

PLUS DE JEUX

MEHR SPIELE

WIĘCEJ GIER

FLER SPEL

ALTRI GIOCHI

MÁS JUEGOS

MAIS JOGOS

ДРУГИЕ ИГРЫ

PERMAINAN LAINNYA

DAHA FAZLA OYUN

LABIH BANYAK PERMAINAN

3000+ GAMES

3000+ GAMES

HIDE TUTORIAL

HIDE TUTORIAL

HIDE TUTORIAL

ARROW KEYS OR W,A,S,D
TO ROTATE FIGURE

WHEN YOU HAVE PLACED YOUR FIGURE
IN THE RIGHT POSITION, PRESS SPACE
TO START MOVING THE WALL

FLY THROUGH
THIS HOLE

YOU HAVE LIMITED TIME
UNTIL THE WALL
BEGINS MOVING
AUTOMATICALLY

GAME OVER

MAIN MENU

MAIN MENU

SEND SCORE

SEND SCORE

YOU WIN

999

LOADING

ActionScript [AS3]

Section 1
//MochiBot (ascb.mochi.MochiBot) package ascb.mochi { import flash.display.*; import flash.net.*; import flash.system.*; public dynamic class MochiBot extends Sprite { public static function track(_arg1:Sprite, _arg2:String):MochiBot{ var _local3:MochiBot; var _local4:String; var _local5:URLVariables; var _local6:String; var _local7:URLRequest; var _local8:Loader; if (Security.sandboxType == "localWithFile"){ return (null); }; _local3 = new (MochiBot); _arg1.addChild(_local3); Security.allowDomain("*"); Security.allowInsecureDomain("*"); _local4 = "http://core.mochibot.com/my/core.swf"; _local5 = new URLVariables(); _local5["sb"] = Security.sandboxType; _local5["v"] = Capabilities.version; _local5["swfid"] = _arg2; _local5["mv"] = "8"; _local5["fv"] = "9"; _local6 = _local3.root.loaderInfo.loaderURL; if (_local6.indexOf("http") == 0){ _local5["url"] = _local6; } else { _local5["url"] = "local"; }; _local7 = new URLRequest(_local4); _local7.contentType = "application/x-www-form-urlencoded"; _local7.method = URLRequestMethod.POST; _local7.data = _local5; _local8 = new Loader(); _local3.addChild(_local8); _local8.load(_local7); return (_local3); } } }//package ascb.mochi
Section 2
//MochiDigits (ascb.mochi.MochiDigits) package ascb.mochi { public final class MochiDigits { private var Sibling:MochiDigits; private var Fragment:Number; private var Encoder:Number; public function MochiDigits(_arg1:Number=0, _arg2:uint=0):void{ Encoder = 0; setValue(_arg1, _arg2); } public function set value(_arg1:Number):void{ setValue(_arg1); } public function reencode():void{ var _local1:uint; _local1 = int((2147483647 * Math.random())); Fragment = (Fragment ^ (_local1 ^ Encoder)); Encoder = _local1; } public function toString():String{ var _local1:String; _local1 = String.fromCharCode((Fragment ^ Encoder)); if (Sibling != null){ _local1 = (_local1 + Sibling.toString()); }; return (_local1); } public function get value():Number{ return (Number(this.toString())); } public function setValue(_arg1:Number=0, _arg2:uint=0):void{ var _local3:String; _local3 = _arg1.toString(); var _temp1 = _arg2; _arg2 = (_arg2 + 1); Fragment = (_local3.charCodeAt(_temp1) ^ Encoder); if (_arg2 < _local3.length){ Sibling = new MochiDigits(_arg1, _arg2); } else { Sibling = null; }; reencode(); } public function addValue(_arg1:Number):void{ value = (value + _arg1); } } }//package ascb.mochi
Section 3
//MochiScores (ascb.mochi.MochiScores) package ascb.mochi { import flash.display.*; import flash.text.*; public class MochiScores { private static var boardID:String; public static var onErrorHandler:Object; public static var onCloseHandler:Object; public static function showLeaderboard(_arg1:Object=null):void{ var n:Number; var options = _arg1; if (options != null){ if (options.clip != null){ if ((options.clip is Sprite)){ MochiServices.setContainer(options.clip); }; delete options.clip; } else { MochiServices.setContainer(); }; MochiServices.stayOnTop(); if (options.name != null){ if ((options.name is TextField)){ if (options.name.text.length > 0){ options.name = options.name.text; }; }; }; if (options.score != null){ if ((options.score is TextField)){ if (options.score.text.length > 0){ options.score = options.score.text; }; } else { if ((options.score is MochiDigits)){ options.score = options.score.value; }; }; n = Number(options.score); if (isNaN(n)){ trace((("ERROR: Submitted score '" + options.score) + "' will be rejected, score is 'Not a Number'")); } else { if ((((n == Number.NEGATIVE_INFINITY)) || ((n == Number.POSITIVE_INFINITY)))){ trace((("ERROR: Submitted score '" + options.score) + "' will be rejected, score is an infinite")); } else { if (Math.floor(n) != n){ trace((("WARNING: Submitted score '" + options.score) + "' will be truncated")); }; options.score = n; }; }; }; if (options.onDisplay != null){ options.onDisplay(); } else { if (MochiServices.clip != null){ if ((MochiServices.clip is MovieClip)){ MochiServices.clip.stop(); } else { trace("Warning: Container is not a MovieClip, cannot call default onDisplay."); }; }; }; } else { options = {}; if ((MochiServices.clip is MovieClip)){ MochiServices.clip.stop(); } else { trace("Warning: Container is not a MovieClip, cannot call default onDisplay."); }; }; if (options.onClose != null){ onCloseHandler = options.onClose; } else { onCloseHandler = function ():void{ if ((MochiServices.clip is MovieClip)){ MochiServices.clip.play(); } else { trace("Warning: Container is not a MovieClip, cannot call default onClose."); }; }; }; if (options.onError != null){ onErrorHandler = options.onError; } else { onErrorHandler = null; }; if (options.boardID == null){ if (MochiScores.boardID != null){ options.boardID = MochiScores.boardID; }; }; MochiServices.send("scores_showLeaderboard", {options:options}, null, onClose); } public static function closeLeaderboard():void{ MochiServices.send("scores_closeLeaderboard"); } public static function getPlayerInfo(_arg1:Object, _arg2:Object=null):void{ MochiServices.send("scores_getPlayerInfo", null, _arg1, _arg2); } public static function requestList(_arg1:Object, _arg2:Object=null):void{ MochiServices.send("scores_requestList", null, _arg1, _arg2); } public static function scoresArrayToObjects(_arg1:Object):Object{ var _local2:Object; var _local3:Number; var _local4:Number; var _local5:Object; var _local6:Object; var _local7:String; var _local8:String; _local2 = {}; for (_local7 in _arg1) { if (typeof(_arg1[_local7]) == "object"){ if (((!((_arg1[_local7].cols == null))) && (!((_arg1[_local7].rows == null))))){ _local2[_local7] = []; _local5 = _arg1[_local7]; _local4 = 0; while (_local4 < _local5.rows.length) { _local6 = {}; _local3 = 0; while (_local3 < _local5.cols.length) { _local6[_local5.cols[_local3]] = _local5.rows[_local4][_local3]; _local3++; }; _local2[_local7].push(_local6); _local4++; }; } else { _local2[_local7] = {}; for (_local8 in _arg1[_local7]) { _local2[_local7][_local8] = _arg1[_local7][_local8]; }; }; } else { _local2[_local7] = _arg1[_local7]; }; }; return (_local2); } public static function submit(_arg1:Number, _arg2:String, _arg3:Object=null, _arg4:Object=null):void{ _arg1 = Number(_arg1); if (isNaN(_arg1)){ trace((("ERROR: Submitted score '" + String(_arg1)) + "' will be rejected, score is 'Not a Number'")); } else { if ((((_arg1 == Number.NEGATIVE_INFINITY)) || ((_arg1 == Number.POSITIVE_INFINITY)))){ trace((("ERROR: Submitted score '" + String(_arg1)) + "' will be rejected, score is an infinite")); } else { if (Math.floor(_arg1) != _arg1){ trace((("WARNING: Submitted score '" + String(_arg1)) + "' will be truncated")); }; _arg1 = Number(_arg1); }; }; MochiServices.send("scores_submit", {score:_arg1, name:_arg2}, _arg3, _arg4); } public static function onClose(_arg1:Object=null):void{ if (_arg1 != null){ if (_arg1.error != null){ if (_arg1.error == true){ if (onErrorHandler != null){ if (_arg1.errorCode == null){ _arg1.errorCode = "IOError"; }; onErrorHandler(_arg1.errorCode); MochiServices.doClose(); return; }; }; }; }; onCloseHandler(); MochiServices.doClose(); } public static function setBoardID(_arg1:String):void{ MochiScores.boardID = _arg1; MochiServices.send("scores_setBoardID", {boardID:_arg1}); } } }//package ascb.mochi
Section 4
//MochiServices (ascb.mochi.MochiServices) package ascb.mochi { import flash.display.*; import flash.events.*; import flash.geom.*; import flash.utils.*; import flash.net.*; import flash.system.*; public class MochiServices { private static var _container:Object; private static var _connected:Boolean = false; private static var _swfVersion:String; public static var netupAttempted:Boolean = false; private static var _sendChannel:LocalConnection; private static var _clip:MovieClip; private static var _loader:Loader; private static var _id:String; private static var _listenChannel:LocalConnection; private static var _timer:Timer; private static var _sendChannelName:String; private static var _startTime:Number; private static var _connecting:Boolean = false; public static var onError:Object; private static var _listenChannelName:String = "__ms_"; private static var _servicesURL:String = "http://www.mochiads.com/static/lib/services/services.swf"; public static var netup:Boolean = true; public static function isNetworkAvailable():Boolean{ return (!((Security.sandboxType == "localWithFile"))); } public static function send(_arg1:String, _arg2:Object=null, _arg3:Object=null, _arg4:Object=null):void{ if (_connected){ _sendChannel.send(_sendChannelName, "onReceive", {methodName:_arg1, args:_arg2, callbackID:_clip._nextcallbackID}); } else { if ((((_clip == null)) || (!(_connecting)))){ onError("NotConnected"); handleError(_arg2, _arg3, _arg4); flush(true); return; }; _clip._queue.push({methodName:_arg1, args:_arg2, callbackID:_clip._nextcallbackID}); }; if (_clip != null){ if (((!((_clip._callbacks == null))) && (!((_clip._nextcallbackID == null))))){ _clip._callbacks[_clip._nextcallbackID] = {callbackObject:_arg3, callbackMethod:_arg4}; _clip._nextcallbackID++; }; }; } public static function get connected():Boolean{ return (_connected); } private static function flush(_arg1:Boolean):void{ var _local2:Object; var _local3:Object; if (_clip != null){ if (_clip._queue != null){ while (_clip._queue.length > 0) { _local2 = _clip._queue.shift(); _local3 = null; if (_local2 != null){ if (_local2.callbackID != null){ _local3 = _clip._callbacks[_local2.callbackID]; }; delete _clip._callbacks[_local2.callbackID]; if (((_arg1) && (!((_local3 == null))))){ handleError(_local2.args, _local3.callbackObject, _local3.callbackMethod); }; }; }; }; }; } private static function clickMovie(_arg1:String, _arg2:Function):MovieClip{ var _local3:Array; var _local4:int; var _local5:Array; var _local6:Array; var _local7:MovieClip; var _local8:LocalConnection; var _local9:String; var _local10:ByteArray; var _local11:ByteArray; var _local12:uint; var _local13:uint; var _local14:Loader; _local3 = [150, 21, 0, 7, 1, 0, 0, 0, 0, 98, 116, 110, 0, 7, 2, 0, 0, 0, 0, 116, 104, 105, 115, 0, 28, 150, 22, 0, 0, 99, 114, 101, 97, 116, 101, 69, 109, 112, 116, 121, 77, 111, 118, 105, 101, 67, 108, 105, 112, 0, 82, 135, 1, 0, 0, 23, 150, 13, 0, 4, 0, 0, 111, 110, 82, 101, 108, 101, 97, 115, 101, 0, 142, 8, 0, 0, 0, 0, 2, 42, 0, 114, 0, 150, 17, 0, 0, 32, 0, 7, 1, 0, 0, 0, 8, 0, 0, 115, 112, 108, 105, 116, 0, 82, 135, 1, 0, 1, 23, 150, 7, 0, 4, 1, 7, 0, 0, 0, 0, 78, 150, 8, 0, 0, 95, 98, 108, 97, 110, 107, 0, 154, 1, 0, 0, 150, 7, 0, 0, 99, 108, 105, 99, 107, 0, 150, 7, 0, 4, 1, 7, 1, 0, 0, 0, 78, 150, 27, 0, 7, 2, 0, 0, 0, 7, 0, 0, 0, 0, 0, 76, 111, 99, 97, 108, 67, 111, 110, 110, 101, 99, 116, 105, 111, 110, 0, 64, 150, 6, 0, 0, 115, 101, 110, 100, 0, 82, 79, 150, 15, 0, 4, 0, 0, 95, 97, 108, 112, 104, 97, 0, 7, 0, 0, 0, 0, 79, 150, 23, 0, 7, 0xFF, 0, 0xFF, 0, 7, 1, 0, 0, 0, 4, 0, 0, 98, 101, 103, 105, 110, 70, 105, 108, 108, 0, 82, 23, 150, 25, 0, 7, 0, 0, 0, 0, 7, 0, 0, 0, 0, 7, 2, 0, 0, 0, 4, 0, 0, 109, 111, 118, 101, 84, 111, 0, 82, 23, 150, 25, 0, 7, 100, 0, 0, 0, 7, 0, 0, 0, 0, 7, 2, 0, 0, 0, 4, 0, 0, 108, 105, 110, 101, 84, 111, 0, 82, 23, 150, 25, 0, 7, 100, 0, 0, 0, 7, 100, 0, 0, 0, 7, 2, 0, 0, 0, 4, 0, 0, 108, 105, 110, 101, 84, 111, 0, 82, 23, 150, 25, 0, 7, 0, 0, 0, 0, 7, 100, 0, 0, 0, 7, 2, 0, 0, 0, 4, 0, 0, 108, 105, 110, 101, 84, 111, 0, 82, 23, 150, 25, 0, 7, 0, 0, 0, 0, 7, 0, 0, 0, 0, 7, 2, 0, 0, 0, 4, 0, 0, 108, 105, 110, 101, 84, 111, 0, 82, 23, 150, 16, 0, 7, 0, 0, 0, 0, 4, 0, 0, 101, 110, 100, 70, 105, 108, 108, 0, 82, 23]; _local5 = [104, 0, 31, 64, 0, 7, 208, 0, 0, 12, 1, 0, 67, 2, 0xFF, 0xFF, 0xFF, 63, 3]; _local6 = [0, 64, 0, 0, 0]; _local7 = new MovieClip(); _local8 = new LocalConnection(); _local9 = ((("_click_" + Math.floor((Math.random() * 999999))) + "_") + Math.floor(new Date().getTime())); _local8 = new LocalConnection(); _local7.lc = _local8; _local7.click = _arg2; _local8.client = _local7; _local8.connect(_local9); _local10 = new ByteArray(); _local11 = new ByteArray(); _local11.endian = Endian.LITTLE_ENDIAN; _local11.writeShort(1); _local11.writeUTFBytes(((_arg1 + " ") + _local9)); _local11.writeByte(0); _local12 = ((_local3.length + _local11.length) + 4); _local13 = (_local12 + 35); _local10.endian = Endian.LITTLE_ENDIAN; _local10.writeUTFBytes("FWS"); _local10.writeByte(8); _local10.writeUnsignedInt(_local13); for each (_local4 in _local5) { _local10.writeByte(_local4); }; _local10.writeUnsignedInt(_local12); _local10.writeByte(136); _local10.writeShort(_local11.length); _local10.writeBytes(_local11); for each (_local4 in _local3) { _local10.writeByte(_local4); }; for each (_local4 in _local6) { _local10.writeByte(_local4); }; _local14 = new Loader(); _local14.loadBytes(_local10); _local7.addChild(_local14); return (_local7); } private static function init(_arg1:String, _arg2:Object):void{ _id = _arg1; if (_arg2 != null){ _container = _arg2; loadCommunicator(_arg1, _container); }; } public static function get childClip():Object{ return (_clip); } public static function stayOnTop():void{ _container.addEventListener(Event.ENTER_FRAME, MochiServices.bringToTop, false, 0, true); if (_clip != null){ _clip.visible = true; }; } public static function addLinkEvent(_arg1:String, _arg2:String, _arg3:DisplayObjectContainer, _arg4:Function=null):void{ var vars:Object; var avm1Click:DisplayObject; var s:String; var i:Number; var x:String; var req:URLRequest; var loader:Loader; var setURL:Function; var err:Function; var complete:Function; var url = _arg1; var burl = _arg2; var btn = _arg3; var onClick = _arg4; vars = new Object(); vars["mav"] = getVersion(); vars["swfv"] = "9"; vars["swfurl"] = btn.loaderInfo.loaderURL; vars["fv"] = Capabilities.version; vars["os"] = Capabilities.os; vars["lang"] = Capabilities.language; vars["scres"] = ((Capabilities.screenResolutionX + "x") + Capabilities.screenResolutionY); s = "?"; i = 0; for (x in vars) { if (i != 0){ s = (s + "&"); }; i = (i + 1); s = (((s + x) + "=") + escape(vars[x])); }; req = new URLRequest("http://x.mochiads.com/linkping.swf"); loader = new Loader(); setURL = function (_arg1:String):void{ var _local2:Rectangle; if (avm1Click){ btn.removeChild(avm1Click); }; avm1Click = clickMovie(_arg1, onClick); _local2 = btn.getBounds(btn); btn.addChild(avm1Click); avm1Click.x = _local2.x; avm1Click.y = _local2.y; avm1Click.scaleX = (0.01 * _local2.width); avm1Click.scaleY = (0.01 * _local2.height); }; err = function (_arg1:Object):void{ netup = false; _arg1.target.removeEventListener(_arg1.type, arguments.callee); setURL(burl); }; complete = function (_arg1:Object):void{ _arg1.target.removeEventListener(_arg1.type, arguments.callee); }; if (netup){ setURL((url + s)); } else { setURL(burl); }; if (!((netupAttempted) || (_connected))){ netupAttempted = true; loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, err); loader.contentLoaderInfo.addEventListener(Event.COMPLETE, complete); loader.load(req); }; } public static function disconnect():void{ if (((_connected) || (_connecting))){ if (_clip != null){ if (_clip.parent != null){ if ((_clip.parent is Sprite)){ Sprite(_clip.parent).removeChild(_clip); _clip = null; }; }; }; _connecting = (_connected = false); flush(true); try { _listenChannel.close(); } catch(error:Error) { }; }; if (_timer != null){ try { _timer.stop(); } catch(error:Error) { }; }; } public static function allowDomains(_arg1:String):String{ var _local2:String; if (Security.sandboxType != "application"){ Security.allowDomain("*"); Security.allowInsecureDomain("*"); }; if (_arg1.indexOf("http://") != -1){ _local2 = _arg1.split("/")[2].split(":")[0]; if (Security.sandboxType != "application"){ Security.allowDomain("*"); Security.allowInsecureDomain("*"); }; }; return (_local2); } public static function getVersion():String{ return ("1.43"); } public static function doClose():void{ _container.removeEventListener(Event.ENTER_FRAME, MochiServices.bringToTop); if (_clip.parent != null){ Sprite(_clip.parent).removeChild(_clip); }; } private static function onStatus(_arg1:StatusEvent):void{ switch (_arg1.level){ case "error": _connected = false; _listenChannel.connect(_listenChannelName); break; }; } public static function get id():String{ return (_id); } private static function urlOptions(_arg1:Object):Object{ var _local2:Object; var _local3:String; var _local4:Array; var _local5:Number; var _local6:Array; _local2 = {}; _local3 = _arg1.loaderInfo.parameters.mochiad_options; if (_local3){ _local4 = _local3.split("&"); _local5 = 0; while (_local5 < _local4.length) { _local6 = _local4[_local5].split("="); _local2[unescape(_local6[0])] = unescape(_local6[1]); _local5++; }; }; return (_local2); } public static function setContainer(_arg1:Object=null, _arg2:Boolean=true):void{ if (_arg1 != null){ if ((_arg1 is Sprite)){ _container = _arg1; }; }; if (_arg2){ if ((_container is Sprite)){ Sprite(_container).addChild(_clip); }; }; } private static function handleError(_arg1:Object, _arg2:Object, _arg3:Object):void{ var args = _arg1; var callbackObject = _arg2; var callbackMethod = _arg3; if (args != null){ if (args.onError != null){ args.onError.apply(null, ["NotConnected"]); }; if (((!((args.options == null))) && (!((args.options.onError == null))))){ args.options.onError.apply(null, ["NotConnected"]); }; }; if (callbackMethod != null){ args = {}; args.error = true; args.errorCode = "NotConnected"; if (((!((callbackObject == null))) && ((callbackMethod is String)))){ try { var _local5 = callbackObject; _local5[callbackMethod](args); } catch(error:Error) { }; } else { if (callbackMethod != null){ try { callbackMethod.apply(args); } catch(error:Error) { }; }; }; }; } private static function initComChannels():void{ if (!_connected){ _sendChannel.addEventListener(StatusEvent.STATUS, MochiServices.onStatus); _sendChannel.send(_sendChannelName, "onReceive", {methodName:"handshakeDone"}); _sendChannel.send(_sendChannelName, "onReceive", {methodName:"registerGame", id:_id, clip:_container, version:getVersion(), parentURL:_container.loaderInfo.loaderURL}); _listenChannel.addEventListener(StatusEvent.STATUS, MochiServices.onStatus); _clip.onReceive = function (_arg1:Object):void{ var cb:String; var cblst:Object; var method:*; var methodName:String; var obj:Object; var pkg = _arg1; cb = pkg.callbackID; cblst = this.client._callbacks[cb]; if (!cblst){ return; }; method = cblst.callbackMethod; methodName = ""; obj = cblst.callbackObject; if (((obj) && ((typeof(method) == "string")))){ methodName = method; if (obj[method] != null){ method = obj[method]; } else { trace((("Error: Method " + method) + " does not exist.")); }; }; if (method != undefined){ try { method.apply(obj, pkg.args); } catch(error:Error) { trace(((("Error invoking callback method '" + methodName) + "': ") + error.toString())); }; } else { if (obj != null){ try { obj(pkg.args); } catch(error:Error) { trace(("Error invoking method on object: " + error.toString())); }; }; }; delete this.client._callbacks[cb]; }; _clip.onError = function ():void{ MochiServices.onError("IOError"); }; trace("connected!"); _connecting = false; _connected = true; while (_clip._queue.length > 0) { _sendChannel.send(_sendChannelName, "onReceive", _clip._queue.shift()); }; }; } private static function listen():void{ _listenChannel = new LocalConnection(); _listenChannel.client = _clip; _clip.handshake = function (_arg1:Object):void{ MochiServices.comChannelName = _arg1.newChannel; }; _listenChannel.allowDomain("*", "localhost"); _listenChannel.allowInsecureDomain("*", "localhost"); _listenChannel.connect(_listenChannelName); trace("Waiting for MochiAds services to connect..."); } public static function set comChannelName(_arg1:String):void{ if (_arg1 != null){ if (_arg1.length > 3){ _sendChannelName = (_arg1 + "_fromgame"); initComChannels(); }; }; } private static function loadCommunicator(_arg1:String, _arg2:Object):MovieClip{ var clipname:String; var f:Function; var req:URLRequest; var vars:URLVariables; var id = _arg1; var clip = _arg2; clipname = ("_mochiservices_com_" + id); if (_clip != null){ return (_clip); }; if (!MochiServices.isNetworkAvailable()){ return (null); }; if (urlOptions(clip).servicesURL != undefined){ _servicesURL = urlOptions(clip).servicesURL; }; MochiServices.allowDomains(_servicesURL); _clip = createEmptyMovieClip(clip, clipname, 10336, false); _loader = new Loader(); _timer = new Timer(1000, 0); _startTime = getTimer(); _timer.addEventListener(TimerEvent.TIMER, connectWait); _timer.start(); f = function (_arg1:Object):void{ _clip._mochiad_ctr_failed = true; trace("MochiServices could not load."); MochiServices.disconnect(); MochiServices.onError("IOError"); }; _listenChannelName = (_listenChannelName + ((Math.floor(new Date().getTime()) + "_") + Math.floor((Math.random() * 99999)))); _loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, f); req = new URLRequest(_servicesURL); vars = new URLVariables(); vars.listenLC = _listenChannelName; vars.mochiad_options = clip.loaderInfo.parameters.mochiad_options; req.data = vars; _loader.load(req); _clip.addChild(_loader); _clip._mochiservices_com = _loader; _sendChannel = new LocalConnection(); _clip._queue = []; _clip._nextcallbackID = 0; _clip._callbacks = {}; listen(); return (_clip); } public static function get clip():Object{ return (_container); } public static function bringToTop(_arg1:Event):void{ var e = _arg1; if (MochiServices.clip != null){ if (MochiServices.childClip != null){ try { if (MochiServices.clip.numChildren > 1){ MochiServices.clip.setChildIndex(MochiServices.childClip, (MochiServices.clip.numChildren - 1)); }; } catch(errorObject:Error) { trace("Warning: Depth sort error."); _container.removeEventListener(Event.ENTER_FRAME, MochiServices.bringToTop); }; }; }; } public static function connect(_arg1:String, _arg2:Object, _arg3:Object=null):void{ var id = _arg1; var clip = _arg2; var onError = _arg3; if ((clip is DisplayObject)){ if (((!(_connected)) && ((_clip == null)))){ trace("MochiServices Connecting..."); _connecting = true; init(id, clip); }; } else { trace("Error, MochiServices requires a Sprite, Movieclip or instance of the stage."); }; if (onError != null){ MochiServices.onError = onError; } else { if (MochiServices.onError == null){ MochiServices.onError = function (_arg1:String):void{ trace(_arg1); }; }; }; } public static function createEmptyMovieClip(_arg1:Object, _arg2:String, _arg3:Number, _arg4:Boolean=true):MovieClip{ var mc:MovieClip; var parent = _arg1; var name = _arg2; var depth = _arg3; var doAdd = _arg4; mc = new MovieClip(); if (doAdd){ if (((false) && (depth))){ parent.addChildAt(mc, depth); } else { parent.addChild(mc); }; }; try { parent[name] = mc; } catch(e:Error) { throw (new Error("MochiServices requires a clip that is an instance of a dynamic class. If your class extends Sprite or MovieClip, you must make it dynamic.")); }; mc["_name"] = name; return (mc); } public static function connectWait(_arg1:TimerEvent):void{ if ((getTimer() - _startTime) > 10000){ if (!_connected){ _clip._mochiad_ctr_failed = true; trace("MochiServices could not load."); MochiServices.disconnect(); MochiServices.onError("IOError"); }; _timer.stop(); }; } } }//package ascb.mochi
Section 5
//Locale (ascb.util.Locale) package ascb.util { import flash.system.*; public class Locale { private var _sLanguage:String; private var _sVariant:String; public static const GERMAN:String = "de"; public static const CHINESE:String = "zh"; public static const ENGLISH:String = "en"; public static const SPANISH:String = "es"; public static const UK:String = "UK"; public static const US:String = "US"; public static const FRENCH:String = "fr"; public static const JAPANESE:String = "jp"; private static var __sLanguage:String; private static var __sVariant:String; public function Locale(_arg1:String=null, _arg2:String=null){ _sLanguage = _arg1; _sVariant = _arg2; } public function get variant():String{ if (_sVariant == null){ if (Locale.svariant == null){ if (Capabilities.language.length > 2){ _sVariant = Capabilities.language.substr(3); } else { if (language == ENGLISH){ if (new Date().getTimezoneOffset() > 120){ _sVariant = US; } else { _sVariant = UK; }; } else { if (language == SPANISH){ if (new Date().getTimezoneOffset() > 120){ _sVariant = "MX"; } else { _sVariant = "ES"; }; }; }; }; } else { _sVariant = Locale.svariant; }; }; return (_sVariant); } public function set variant(_arg1:String):void{ _sVariant = _arg1; } public function get languageVariant():String{ var _local1:String; _local1 = language; if (variant != null){ _local1 = (_local1 + ("-" + variant)); }; return (_local1); } public function set language(_arg1:String):void{ _sLanguage = _arg1; } public function reset():void{ _sLanguage = null; _sVariant = null; } public function set languageVariant(_arg1:String):void{ var _local2:Array; _local2 = _arg1.split("-"); _sLanguage = _local2[0]; _sVariant = _local2[1]; } public function get language():String{ if (_sLanguage == null){ if (Locale.slanguage == null){ _sLanguage = Capabilities.language.substr(0, 2); } else { _sLanguage = Locale.slanguage; }; }; return (_sLanguage); } public static function sreset():void{ __sLanguage = null; __sVariant = null; } public static function get slanguage():String{ return (__sLanguage); } public static function set slanguage(_arg1:String):void{ __sLanguage = _arg1; } public static function set svariant(_arg1:String):void{ __sVariant = _arg1; } public static function get svariant():String{ return (__sVariant); } public static function get slanguageVariant():String{ var _local1:String; _local1 = slanguage; if (svariant != null){ _local1 = (_local1 + ("-" + svariant)); }; return (_local1); } public static function set slanguageVariant(_arg1:String):void{ var _local2:Array; _local2 = _arg1.split("-"); __sLanguage = _local2[0]; __sVariant = _local2[1]; } } }//package ascb.util
Section 6
//NumberFormat (ascb.util.NumberFormat) package ascb.util { public class NumberFormat { private var _sMask:String; public function NumberFormat(_arg1:String=null){ _sMask = _arg1; } public function parse(_arg1:String, _arg2:Number, _arg3:Boolean, _arg4:Locale):Number{ var _local5:Object; var _local6:Array; var _local7:Number; if (_arg4 == null){ _arg4 = new Locale(); }; _local5 = getSymbols(_arg3, _arg4); _local6 = _arg1.split(""); if (isNaN(_arg2)){ if (_local6[0] == "O"){ if (_local6[1] == "x"){ _arg2 = 16; } else { _arg2 = 8; }; } else { if (_local6[0] == "#"){ _arg2 = 16; } else { _arg2 = (isNaN(_arg2)) ? 10 : _arg2; }; }; }; _local7 = 0; while (_local7 < _local6.length) { switch (_local6[_local7]){ case "0": case "1": case "2": case "3": case "4": case "5": case "6": case "7": case "8": case "9": break; case _local5.decimal: _local6[_local7] = "."; break; default: if (_arg2 > 10){ if ((((((_local6[_local7].charCodeAt(0) > 64)) && ((_local6[_local7].charCodeAt(0) < 91)))) || ((((_local6[_local7].charCodeAt(0) > 96)) && ((_local6[_local7].charCodeAt(0) < 123)))))){ break; }; }; _local6.splice(_local7, 1); _local7--; }; _local7++; }; if (_arg2 == 10){ return (Number(_local6.join(""))); }; return (parseInt(_local6.join(""), _arg2)); } private function getSymbols(_arg1:Boolean, _arg2:Locale):Object{ var _local3:Object; _local3 = new Object(); switch (_arg2.languageVariant){ case "en-US": _local3.currency = "$"; _local3.group = ","; _local3.decimal = "."; _local3.before = true; break; case "en-UK": _local3.currency = "£"; _local3.group = ","; _local3.decimal = "."; _local3.before = true; break; case "es-MX": _local3.currency = "$"; _local3.group = ","; _local3.decimal = "."; _local3.before = true; break; case "es-ES": _local3.currency = "€"; _local3.group = "."; _local3.decimal = ","; _local3.before = false; break; case "fr": _local3.currency = "€"; _local3.group = "."; _local3.decimal = ","; _local3.before = false; break; case "sv": _local3.currency = "kr"; _local3.group = (_arg1) ? "," : " "; _local3.decimal = "."; _local3.before = false; break; case "jp": _local3.currency = " 5"; _local3.group = ","; _local3.decimal = "."; _local3.before = true; break; case "nl": _local3.currency = "€"; _local3.group = "."; _local3.decimal = ","; _local3.before = true; break; default: _local3.currency = "€"; _local3.group = "."; _local3.decimal = ","; _local3.before = true; break; }; return (_local3); } public function format(_arg1:Number, _arg2:Object=null, _arg3:Object=null):String{ var _local4:Number; var _local5:Number; var _local6:String; var _local7:Object; var _local8:String; var _local9:String; var _local10:Array; var _local11:Array; var _local12:Array; var _local13:Number; var _local14:String; var _local15:Locale; var _local16:Locale; var _local17:Array; var _local18:Array; var _local19:Array; var _local20:Number; var _local21:Number; var _local22:Array; var _local23:Boolean; var _local24:Number; if (typeof(_arg2) == "number"){ _local13 = Number(_arg2); _local6 = _arg1.toString(_local13); _local14 = ""; if (_local13 == 16){ _local14 = "0x"; }; if (_local13 == 8){ _local14 = "0"; }; if (_arg3 != null){ _local14 = String(_arg3); }; return ((_local14 + _local6.toUpperCase())); }; _local8 = ","; _local9 = "."; if (((!((_arg2 == null))) && (_arg2.hasOwnProperty("group")))){ _local7 = _arg2; } else { _local15 = Locale(_arg2); if (_local15 == null){ _local15 = new Locale(); }; _local16 = Locale(_local15); _local7 = getSymbols(false, _local16); }; _local8 = _local7.decimal; _local9 = _local7.group; _local10 = String(_arg1).split("."); _local11 = _local10[0].split(""); _local12 = ((_local10.length)>1) ? _local10[1].split("") : new Array(); if (_sMask == null){ _local4 = 1; _local11.reverse(); _local5 = 0; while (_local5 < _local11.length) { if (_local4 > 3){ _local4 = 0; _local11.splice(_local5, 0, _local9); }; _local4++; _local5++; }; _local11.reverse(); _local6 = _local11.join(""); if (_local10[1] != null){ _local6 = (_local6 + (_local8 + _local10[1])); }; } else { _local17 = _sMask.split(""); _local5 = 0; while (_local5 < _local17.length) { if (((((!((_local17[_local5] == "0"))) && (!((_local17[_local5] == "#"))))) && (!((_local17[_local5] == "."))))){ _local17.splice(_local5, 1); _local5--; }; _local5++; }; _local17 = _local17.join("").split("."); _local18 = _local17[0].split(""); _local19 = ((_local17.length)>1) ? _local17[1].split("") : new Array(); _local4 = _local18.length; _local20 = 0; _local21 = 0; _local6 = ""; if (_local4 < _local11.length){ _local5 = 0; while (_local5 < (_local11.length - _local4)) { _local6 = (_local6 + _local11[_local5]); _local20++; _local5++; }; } else { if (_local4 > _local11.length){ _local5 = 0; while (_local5 < (_local4 - _local11.length)) { if (_local18[_local5] == "0"){ _local6 = (_local6 + "0"); } else { if (_local18[_local5] == "#"){ _local6 = (_local6 + " "); }; }; _local21++; _local5++; }; }; }; _local23 = false; _local5 = _local21; while (_local5 < _local18.length) { if ((((_local18[_local5] == "0")) || ((_local18[_local5] == "#")))){ _local6 = (_local6 + ((_local11[_local20])==undefined) ? "" : _local11[_local20]); _local20++; }; _local5++; }; _local17 = _sMask.split("."); _local17 = _local17[0].split(""); _local22 = _local6.split(""); _local23 = false; _local5 = 0; while (_local5 < _local17.length) { if (((((!((_local17[_local5] == "0"))) && (!((_local17[_local5] == "#"))))) && (!((_local17[_local5] == "."))))){ if (_local23){ _local22.splice(_local5, 0, _local9); } else { _local22.splice(_local5, 0, " "); }; }; if (((!((_local22[_local5] == " "))) && (!((_local22[_local5] == "0"))))){ _local23 = true; }; _local5++; }; _local6 = _local22.join(""); if (_local19.length > 0){ _local6 = (_local6 + _local8); }; _local5 = 0; while (_local5 < _local19.length) { if (_local12[_local5] == null){ if (_local19[_local5] == "0"){ _local6 = (_local6 + "0"); } else { if (_local19[_local5] == "#"){ _local6 = (_local6 + " "); }; }; } else { _local24 = Number(((_local12[_local5] + "") + _local12[(_local5 + 1)])); if ((((_local5 == (_local19.length - 1))) && (!(isNaN(_local24))))){ _local6 = (_local6 + String(Math.round((_local24 / 10)))); } else { _local6 = (_local6 + _local12[_local5]); }; }; _local5++; }; }; return (_local6); } public function set mask(_arg1:String):void{ _sMask = _arg1; } public function currencyFormat(_arg1:Number, _arg2:Object=null):String{ var _local4:Locale; var _local5:Object; var _local6:String; var _local7:String; var _local8:String; var _local9:String; var _local10:Locale; var _local11:String; var _local12:Array; var _local13:Array; var _local14:Number; var _local15:String; var _local16:Number; _local4 = ((arguments[1] is Locale)) ? arguments[1] : new Locale(); if (((!((_arg2 == null))) && (_arg2.hasOwnProperty("group")))){ _local5 = _arg2; } else { _local5 = getSymbols(true, _local4); }; _local6 = _local5.currency; _local7 = _local5.group; _local8 = _local5.decimal; _local9 = _sMask; _sMask = null; _local10 = new Locale(); _local10.language = "en"; _local10.variant = "US"; _local11 = format(_arg1, _local10); _sMask = _local9; _local12 = _local11.split("."); if (_local12[1] == undefined){ _local12[1] = "00"; } else { _local12[1] = Number(_local12[1]); _local16 = String(_local12[1]).length; if (_local16 > 2){ _local12[1] = (_local12[1] / Math.pow(10, (_local16 - 2))); _local12[1] = Math.round(_local12[1]); }; }; _local11 = _local12.join("."); _local13 = _local11.split(""); _local14 = 0; while (_local14 < _local13.length) { if (_local13[_local14] == ","){ _local13[_local14] = _local7; } else { if (_local13[_local14] == "."){ _local13[_local14] = _local8; }; }; _local14++; }; _local15 = (((_local5.before) ? _local6 : "" + _local13.join("")) + (_local5.before) ? "" : _local6); return (_local15); } public function get mask():String{ return (_sMask); } } }//package ascb.util
Section 7
//NumberUtilities (ascb.util.NumberUtilities) package ascb.util { public class NumberUtilities { private static var _aUniqueIDs:Array; public static function random(_arg1:Number, _arg2:Number=0, _arg3:Number=1):Number{ var _local4:Number; var _local5:Number; var _local6:Number; if (_arg1 > _arg2){ _local6 = _arg1; _arg1 = _arg2; _arg2 = _local6; }; _local4 = ((_arg2 - _arg1) + (1 * _arg3)); _local5 = (Math.random() * _local4); _local5 = (_local5 + _arg1); return (floor(_local5, _arg3)); } public static function ceil(_arg1:Number, _arg2:Number=1):Number{ return ((Math.ceil((_arg1 / _arg2)) * _arg2)); } public static function getUnique():Number{ var _local1:Date; var _local2:Number; if (_aUniqueIDs == null){ _aUniqueIDs = new Array(); }; _local1 = new Date(); _local2 = _local1.getTime(); while (!(isUnique(_local2))) { _local2 = (_local2 + NumberUtilities.random(_local1.getTime(), (2 * _local1.getTime()))); }; _aUniqueIDs.push(_local2); return (_local2); } private static function isUnique(_arg1:Number):Boolean{ var _local2:Number; _local2 = 0; while (_local2 < _aUniqueIDs.length) { if (_aUniqueIDs[_local2] == _arg1){ return (false); }; _local2++; }; return (true); } public static function floor(_arg1:Number, _arg2:Number=1):Number{ return ((Math.floor((_arg1 / _arg2)) * _arg2)); } public static function round(_arg1:Number, _arg2:Number=1):Number{ return ((Math.round((_arg1 / _arg2)) * _arg2)); } } }//package ascb.util
Section 8
//URLUtils (ascb.util.URLUtils) package ascb.util { public class URLUtils { public static function checkDomain(_arg1:String, _arg2:String):Boolean{ var _local3:Number; var _local4:Number; var _local5:String; var _local6:Number; var _local7:Number; _local3 = (_arg1.indexOf("://") + 3); _local4 = _arg1.indexOf("/", _local3); _local5 = _arg1.substring(_local3, _local4); _local6 = (_local5.lastIndexOf(".") - 1); _local7 = (_local5.lastIndexOf(".", _local6) + 1); _local5 = _local5.substring(_local7, _local5.length); return ((_local5 == _arg2)); } public static function checkBigFishGamesDomain(_arg1:String):Boolean{ var _local2:Array; var _local3:Number; var _local4:Number; var _local5:String; var _local6:Number; var _local7:Number; var _local8:Number; _local2 = ["kornushin.com", "games.bigfishgames.com", "bigfishgames.com", "bigfishgames.de", "bigfishgames.fr", "bigfishgames.es", "bigfishgames.mx", "bigfishgames.jp"]; _local3 = (_arg1.indexOf("://") + 3); _local4 = _arg1.indexOf("/", _local3); _local5 = _arg1.substring(_local3, _local4); _local6 = (_local5.lastIndexOf(".") - 1); _local7 = (_local5.lastIndexOf(".", _local6) + 1); _local5 = _local5.substring(_local7, _local5.length); _local8 = 0; while (_local8 < _local2.length) { if (_local5 == _local2[_local8]){ return (true); }; _local8++; }; return (false); } } }//package ascb.util
Section 9
//Back (fl.motion.easing.Back) package fl.motion.easing { public class Back { public static function easeOut(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number=0):Number{ if (!_arg5){ _arg5 = 1.70158; }; _arg1 = ((_arg1 / _arg4) - 1); return (((_arg3 * (((_arg1 * _arg1) * (((_arg5 + 1) * _arg1) + _arg5)) + 1)) + _arg2)); } public static function easeIn(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number=0):Number{ if (!_arg5){ _arg5 = 1.70158; }; _arg1 = (_arg1 / _arg4); return (((((_arg3 * _arg1) * _arg1) * (((_arg5 + 1) * _arg1) - _arg5)) + _arg2)); } public static function easeInOut(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number=0):Number{ if (!_arg5){ _arg5 = 1.70158; }; _arg1 = (_arg1 / (_arg4 / 2)); if (_arg1 < 1){ _arg5 = (_arg5 * 1.525); return ((((_arg3 / 2) * ((_arg1 * _arg1) * (((_arg5 + 1) * _arg1) - _arg5))) + _arg2)); }; _arg1 = (_arg1 - 2); _arg5 = (_arg5 * 1.525); return ((((_arg3 / 2) * (((_arg1 * _arg1) * (((_arg5 + 1) * _arg1) + _arg5)) + 2)) + _arg2)); } } }//package fl.motion.easing
Section 10
//TweenFilterLite (gs.TweenFilterLite) package gs { import flash.display.*; import flash.filters.*; import flash.utils.*; public class TweenFilterLite extends TweenLite { private var _mc:DisplayObject; private var _clrsa:Array; private var _fType:Class; private var _clrMtxTw:TweenLite; public var _matrix:Array; private var _f:BitmapFilter; private var _endMatrix:Array; public static var version:Number = 5.87; private static var _idMatrix:Array = [1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0]; public static var killTweensOf:Function = TweenLite.killTweensOf; public static var delayedCall:Function = TweenLite.delayedCall; private static var _lumB:Number = 0.072169; private static var _lumG:Number = 0.71516; public static var killDelayedCallsTo:Function = TweenLite.killTweensOf; private static var _lumR:Number = 0.212671; public function TweenFilterLite(_arg1:DisplayObject, _arg2:Number, _arg3:Object){ _fType = TweenFilterLite; super(_arg1, _arg2, _arg3); if (_arg1 == null){ return; }; _mc = _arg1; _clrsa = []; if (this.vars.runBackwards == true){ initTweenVals(); }; if ((((TweenLite.version < 5.87)) || (isNaN(TweenLite.version)))){ trace("ERROR! Please update your TweenLite class. TweenFilterLite requires a more recent version. Download updates at http://www.TweenLite.com."); }; } private function setFilter(_arg1:Class, _arg2:Array, _arg3:BitmapFilter):void{ var _local4:Array; var _local5:int; var _local6:Number; var _local7:String; var _local8:Object; var _local9:Object; var _local10:Object; _fType = _arg1; _local4 = _mc.filters; _local5 = 0; while (_local5 < _local4.length) { if ((_local4[_local5] is _arg1)){ _f = _local4[_local5]; break; }; _local5++; }; if (_f == null){ _local4.push(_arg3); _mc.filters = _local4; _f = _arg3; }; _local5 = 0; while (_local5 < _arg2.length) { _local7 = _arg2[_local5]; if (this.tweens[_local7] != undefined){ _local8 = this.tweens[_local7]; delete this.tweens[_local7]; } else { if (this.extraTweens[_local7] != undefined){ _local8 = this.extraTweens[_local7]; } else { _local8 = null; }; }; if (_local8 != null){ if ((((((((((((((_local7 == "brightness")) || ((_local7 == "colorize")))) || ((_local7 == "amount")))) || ((_local7 == "saturation")))) || ((_local7 == "contrast")))) || ((_local7 == "hue")))) || ((_local7 == "threshold")))){ } else { if ((((((_local7 == "color")) || ((_local7 == "highlightColor")))) || ((_local7 == "shadowColor")))){ _local9 = HEXtoRGB(_f[_local7]); _local10 = HEXtoRGB(this.vars[_local7]); _clrsa.push({p:_local7, e:this.vars.ease, sr:_local9.rb, cr:(_local10.rb - _local9.rb), sg:_local9.gb, cg:(_local10.gb - _local9.gb), sb:_local9.bb, cb:(_local10.bb - _local9.bb)}); } else { if ((((((((_local7 == "quality")) || ((_local7 == "inner")))) || ((_local7 == "knockout")))) || ((_local7 == "hideObject")))){ _f[_local7] = this.vars[_local7]; } else { if (typeof(this.vars[_local7]) == "number"){ _local6 = (this.vars[_local7] - _f[_local7]); } else { _local6 = Number(this.vars[_local7]); }; this.tweens[_local7] = {o:_f, p:_local7, s:_f[_local7], c:_local6, e:this.vars.ease}; }; }; }; }; _local5++; }; } override public function render(_arg1:uint):void{ var _local2:Number; var _local3:Number; var _local4:Object; var _local5:String; var _local6:int; var _local7:Number; var _local8:Number; var _local9:Number; var _local10:Array; _local2 = ((_arg1 - this.startTime) / 1000); if (_local2 > this.duration){ _local2 = this.duration; }; _local3 = this.vars.ease(_local2, 0, 1, this.duration); for (_local5 in this.tweens) { _local4 = this.tweens[_local5]; _local4.o[_local5] = (_local4.s + (_local3 * _local4.c)); }; if (_mc.parent != null){ _local6 = 0; while (_local6 < _clrsa.length) { _local4 = _clrsa[_local6]; _local7 = (_local4.sr + (_local3 * _local4.cr)); _local8 = (_local4.sg + (_local3 * _local4.cg)); _local9 = (_local4.sb + (_local3 * _local4.cb)); _f[_local4.p] = (((_local7 << 16) | (_local8 << 8)) | _local9); _local6++; }; if (_endMatrix != null){ ColorMatrixFilter(_f).matrix = _matrix; }; _local10 = _mc.filters.slice(); _local6 = (_local10.length - 1); while (_local6 > -1) { if ((_local10[_local6] is _fType)){ _local10[_local6] = _f; break; }; _local6--; }; _mc.filters = _local10; }; if (this.vars.onUpdate != null){ this.vars.onUpdate.apply(null, this.vars.onUpdateParams); }; if (_local2 == this.duration){ super.complete(true); }; } public function HEXtoRGB(_arg1:Number):Object{ return ({rb:(_arg1 >> 16), gb:((_arg1 >> 8) & 0xFF), bb:(_arg1 & 0xFF)}); } override public function initTweenVals():void{ var _local1:String; var _local2:Number; if (_mc != null){ super.initTweenVals(); if (this.vars.type != null){ _clrsa = []; _matrix = _idMatrix.slice(); if ((((this.vars.quality == undefined)) || (isNaN(this.vars.quality)))){ this.vars.quality = 2; }; if (this.vars.runBackwards == true){ for (_local1 in this.tweens) { this.tweens[_local1].flipped = true; }; }; switch (this.vars.type.toLowerCase()){ case "blur": setFilter(BlurFilter, ["blurX", "blurY", "quality"], new BlurFilter(0, 0, this.vars.quality)); break; case "glow": setFilter(GlowFilter, ["alpha", "blurX", "blurY", "color", "quality", "strength", "inner", "knockout"], new GlowFilter(0xFFFFFF, 0, 0, 0, ((this.vars.strength) || (1)), this.vars.quality, this.vars.inner, this.vars.knockout)); break; case "colormatrix": case "color": case "colormatrixfilter": case "colorize": setFilter(ColorMatrixFilter, [], new ColorMatrixFilter(_matrix)); _matrix = ColorMatrixFilter(_f).matrix; if (this.vars.relative == true){ _endMatrix = _matrix.slice(); } else { _endMatrix = _idMatrix.slice(); }; _endMatrix = setBrightness(_endMatrix, this.vars.brightness); _endMatrix = setContrast(_endMatrix, this.vars.contrast); _endMatrix = setHue(_endMatrix, this.vars.hue); _endMatrix = setSaturation(_endMatrix, this.vars.saturation); _endMatrix = setThreshold(_endMatrix, this.vars.threshold); if (!isNaN(this.vars.colorize)){ _endMatrix = colorize(_endMatrix, this.vars.colorize, this.vars.amount); } else { if (!isNaN(this.vars.color)){ _endMatrix = colorize(_endMatrix, this.vars.color, this.vars.amount); }; }; _local2 = (this.delay - ((getTimer() - this.initTime) / 1000)); _clrMtxTw = new TweenLite(_matrix, this.duration, {endArray:_endMatrix, ease:this.vars.ease, delay:_local2, overwrite:false, runBackwards:this.vars.runBackwards}); _clrMtxTw.endTarget = _mc; break; case "shadow": case "dropshadow": setFilter(DropShadowFilter, ["alpha", "angle", "blurX", "blurY", "color", "distance", "quality", "strength", "inner", "knockout", "hideObject"], new DropShadowFilter(0, 45, 0, 0, 0, 0, 1, this.vars.quality, this.vars.inner, this.vars.knockout, this.vars.hideObject)); break; case "bevel": setFilter(BevelFilter, ["angle", "blurX", "blurY", "distance", "highlightAlpha", "highlightColor", "quality", "shadowAlpha", "shadowColor", "strength"], new BevelFilter(0, 0, 0xFFFFFF, 0.5, 0, 0.5, 2, 2, 0, this.vars.quality)); break; }; if (this.vars.runBackwards == true){ flipFilterVals(); }; }; }; } private function flipFilterVals():void{ var _local1:Boolean; var _local2:int; var _local3:Object; var _local4:String; var _local5:Array; _local1 = this.active; for (_local4 in this.tweens) { if (this.tweens[_local4].flipped != true){ _local3 = this.tweens[_local4]; _local3.s = (_local3.s + _local3.c); _local3.c = (_local3.c * -1); _local3.o[_local4] = _local3.s; _local3.flipped = true; }; }; _local2 = 0; while (_local2 < _clrsa.length) { _local3 = _clrsa[_local2]; _local3.sr = (_local3.sr + _local3.cr); _local3.cr = (_local3.cr * -1); _local3.sg = (_local3.sg + _local3.cg); _local3.cg = (_local3.cg * -1); _local3.sb = (_local3.sb + _local3.cb); _local3.cb = (_local3.cb * -1); if (!_local1){ _f[_local3.p] = (((_local3.sr << 16) | (_local3.sg << 8)) | _local3.sb); }; _local2++; }; if (((_local1) && (!((this.duration == 0.001))))){ render(getTimer()); } else { if (((!((_mc.parent == null))) && (!((_fType == null))))){ if (_endMatrix != null){ ColorMatrixFilter(_f).matrix = _matrix; }; _local5 = _mc.filters.slice(); _local2 = (_local5.length - 1); while (_local2 > -1) { if ((_local5[_local2] is _fType)){ _local5[_local2] = _f; break; }; _local2--; }; _mc.filters = _local5; }; }; if (this.vars.onUpdate != null){ this.vars.onUpdate.apply(null, this.vars.onUpdateParams); }; } public static function setContrast(_arg1:Array, _arg2:Number):Array{ var _local3:Array; if (isNaN(_arg2)){ return (_arg1); }; _arg2 = (_arg2 + 0.01); _local3 = [_arg2, 0, 0, 0, (128 * (1 - _arg2)), 0, _arg2, 0, 0, (128 * (1 - _arg2)), 0, 0, _arg2, 0, (128 * (1 - _arg2)), 0, 0, 0, 1, 0]; return (applyMatrix(_local3, _arg1)); } public static function applyMatrix(_arg1:Array, _arg2:Array):Array{ var _local3:Array; var _local4:int; var _local5:int; var _local6:int; var _local7:int; if (((!((_arg1 is Array))) || (!((_arg2 is Array))))){ return (_arg2); }; _local3 = []; _local4 = 0; _local5 = 0; _local6 = 0; while (_local6 < 4) { _local7 = 0; while (_local7 < 5) { if (_local7 == 4){ _local5 = _arg1[(_local4 + 4)]; } else { _local5 = 0; }; _local3[(_local4 + _local7)] = (((((_arg1[_local4] * _arg2[_local7]) + (_arg1[(_local4 + 1)] * _arg2[(_local7 + 5)])) + (_arg1[(_local4 + 2)] * _arg2[(_local7 + 10)])) + (_arg1[(_local4 + 3)] * _arg2[(_local7 + 15)])) + _local5); _local7++; }; _local4 = (_local4 + 5); _local6++; }; return (_local3); } public static function colorize(_arg1:Array, _arg2:Number, _arg3:Number=100):Array{ var _local4:Number; var _local5:Number; var _local6:Number; var _local7:Number; var _local8:Array; if (isNaN(_arg2)){ return (_arg1); }; if (isNaN(_arg3)){ _arg3 = 1; }; _local4 = (((_arg2 >> 16) & 0xFF) / 0xFF); _local5 = (((_arg2 >> 8) & 0xFF) / 0xFF); _local6 = ((_arg2 & 0xFF) / 0xFF); _local7 = (1 - _arg3); _local8 = [(_local7 + ((_arg3 * _local4) * _lumR)), ((_arg3 * _local4) * _lumG), ((_arg3 * _local4) * _lumB), 0, 0, ((_arg3 * _local5) * _lumR), (_local7 + ((_arg3 * _local5) * _lumG)), ((_arg3 * _local5) * _lumB), 0, 0, ((_arg3 * _local6) * _lumR), ((_arg3 * _local6) * _lumG), (_local7 + ((_arg3 * _local6) * _lumB)), 0, 0, 0, 0, 0, 1, 0]; return (applyMatrix(_local8, _arg1)); } public static function setBrightness(_arg1:Array, _arg2:Number):Array{ if (isNaN(_arg2)){ return (_arg1); }; _arg2 = ((_arg2 * 100) - 100); return (applyMatrix([1, 0, 0, 0, _arg2, 0, 1, 0, 0, _arg2, 0, 0, 1, 0, _arg2, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1], _arg1)); } public static function setSaturation(_arg1:Array, _arg2:Number):Array{ var _local3:Number; var _local4:Number; var _local5:Number; var _local6:Number; var _local7:Array; if (isNaN(_arg2)){ return (_arg1); }; _local3 = (1 - _arg2); _local4 = (_local3 * _lumR); _local5 = (_local3 * _lumG); _local6 = (_local3 * _lumB); _local7 = [(_local4 + _arg2), _local5, _local6, 0, 0, _local4, (_local5 + _arg2), _local6, 0, 0, _local4, _local5, (_local6 + _arg2), 0, 0, 0, 0, 0, 1, 0]; return (applyMatrix(_local7, _arg1)); } public static function from(_arg1:DisplayObject, _arg2:Number, _arg3:Object):TweenFilterLite{ _arg3.runBackwards = true; return (new TweenFilterLite(_arg1, _arg2, _arg3)); } public static function setThreshold(_arg1:Array, _arg2:Number):Array{ var _local3:Array; if (isNaN(_arg2)){ return (_arg1); }; _local3 = [(_lumR * 0x0100), (_lumG * 0x0100), (_lumB * 0x0100), 0, (-256 * _arg2), (_lumR * 0x0100), (_lumG * 0x0100), (_lumB * 0x0100), 0, (-256 * _arg2), (_lumR * 0x0100), (_lumG * 0x0100), (_lumB * 0x0100), 0, (-256 * _arg2), 0, 0, 0, 1, 0]; return (applyMatrix(_local3, _arg1)); } public static function setHue(_arg1:Array, _arg2:Number):Array{ var _local3:Number; var _local4:Number; var _local5:Array; if (isNaN(_arg2)){ return (_arg1); }; _arg2 = (_arg2 * (Math.PI / 180)); _local3 = Math.cos(_arg2); _local4 = Math.sin(_arg2); _local5 = [((_lumR + (_local3 * (1 - _lumR))) + (_local4 * -(_lumR))), ((_lumG + (_local3 * -(_lumG))) + (_local4 * -(_lumG))), ((_lumB + (_local3 * -(_lumB))) + (_local4 * (1 - _lumB))), 0, 0, ((_lumR + (_local3 * -(_lumR))) + (_local4 * 0.143)), ((_lumG + (_local3 * (1 - _lumG))) + (_local4 * 0.14)), ((_lumB + (_local3 * -(_lumB))) + (_local4 * -0.283)), 0, 0, ((_lumR + (_local3 * -(_lumR))) + (_local4 * -((1 - _lumR)))), ((_lumG + (_local3 * -(_lumG))) + (_local4 * _lumG)), ((_lumB + (_local3 * (1 - _lumB))) + (_local4 * _lumB)), 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1]; return (applyMatrix(_local5, _arg1)); } public static function to(_arg1:DisplayObject, _arg2:Number, _arg3:Object):TweenFilterLite{ return (new TweenFilterLite(_arg1, _arg2, _arg3)); } } }//package gs
Section 11
//TweenLite (gs.TweenLite) package gs { import flash.display.*; import flash.events.*; import flash.geom.*; import flash.media.*; import flash.utils.*; public class TweenLite { public var delay:Number; protected var _endTarget:Object; private var _sound:SoundTransform; public var target:Object; public var duration:Number; public var startTime:uint; public var extraTweens:Object; protected var _color:ColorTransform; protected var _active:Boolean; protected var _endColor:ColorTransform; public var vars:Object; public var tweens:Object; public var initTime:uint; private static var _sprite:Sprite = new Sprite(); private static var _timer:Timer = new Timer(2000); protected static var _all:Dictionary = new Dictionary(); public static var killDelayedCallsTo:Function = killTweensOf; public static var version:Number = 5.87; private static var _listening:Boolean; public function TweenLite(_arg1:Object, _arg2:Number, _arg3:Object){ if (_arg1 == null){ return; }; if (((((!((_arg3.overwrite == false))) && (!((_arg1 == null))))) || ((_all[_arg1] == undefined)))){ delete _all[_arg1]; _all[_arg1] = new Dictionary(); }; _all[_arg1][this] = this; this.vars = _arg3; this.duration = _arg2; this.delay = ((_arg3.delay) || (0)); if (_arg2 == 0){ this.duration = 0.001; if (this.delay == 0){ this.vars.runBackwards = true; }; }; this.target = (_endTarget = _arg1); if (!(this.vars.ease is Function)){ this.vars.ease = easeOut; }; if (this.vars.easeParams != null){ this.vars.proxiedEase = this.vars.ease; this.vars.ease = easeProxy; }; if (this.vars.mcColor != null){ this.vars.tint = this.vars.mcColor; }; if (!isNaN(Number(this.vars.autoAlpha))){ this.vars.alpha = Number(this.vars.autoAlpha); }; this.tweens = {}; this.extraTweens = {}; this.initTime = getTimer(); if (this.vars.runBackwards == true){ initTweenVals(); }; _active = false; if ((((_arg2 == 0)) && ((this.delay == 0)))){ complete(true); } else { if (!_listening){ _sprite.addEventListener(Event.ENTER_FRAME, executeAll); _timer.addEventListener("timer", killGarbage); _timer.start(); _listening = true; }; }; } public function set endTarget(_arg1:Object):void{ if ((((this.duration == 0.001)) && ((this.delay <= 0)))){ removeTween(this); } else { delete _all[_endTarget][this]; _endTarget = _arg1; if (_all[_arg1] == undefined){ _all[_arg1] = new Dictionary(); }; _all[_arg1][this] = this; }; } public function get colorProxy():Number{ return (0); } public function get endTarget():Object{ return (_endTarget); } public function get active():Boolean{ if (_active){ return (true); }; if (((getTimer() - this.initTime) / 1000) > this.delay){ _active = true; this.startTime = (this.initTime + (this.delay * 1000)); if (this.vars.runBackwards != true){ initTweenVals(); } else { if (typeof(this.vars.autoAlpha) == "number"){ this.target.visible = true; }; }; if (this.vars.onStart != null){ this.vars.onStart.apply(null, this.vars.onStartParams); }; if (this.duration == 0.001){ this.startTime = (this.startTime - 1); }; return (true); //unresolved jump }; return (false); } public function initTweenVals():void{ var _local1:Number; var _local2:String; var _local3:Number; var _local4:Array; var _local5:int; var _local6:TweenLite; var _local7:TweenLite; var _local8:Object; _local1 = (this.delay - ((getTimer() - this.initTime) / 1000)); if ((this.target is Array)){ _local4 = ((this.vars.endArray) || ([])); _local5 = 0; while (_local5 < _local4.length) { if (((!((this.target[_local5] == _local4[_local5]))) && (!((this.target[_local5] == undefined))))){ this.tweens[_local5.toString()] = {o:this.target, s:this.target[_local5], c:(_local4[_local5] - this.target[_local5])}; }; _local5++; }; } else { for (_local2 in this.vars) { if ((((((((((((((((((((((((((((_local2 == "delay")) || ((_local2 == "ease")))) || ((_local2 == "overwrite")))) || ((_local2 == "onComplete")))) || ((_local2 == "onCompleteParams")))) || ((_local2 == "runBackwards")))) || ((_local2 == "onUpdate")))) || ((_local2 == "onUpdateParams")))) || ((_local2 == "autoAlpha")))) || ((_local2 == "onStart")))) || ((_local2 == "onStartParams")))) || ((_local2 == "easeParams")))) || ((_local2 == "mcColor")))) || ((_local2 == "type")))){ } else { if ((((_local2 == "tint")) && ((this.target is DisplayObject)))){ _color = this.target.transform.colorTransform; _endColor = new ColorTransform(); if (this.vars.alpha != undefined){ _endColor.alphaMultiplier = this.vars.alpha; delete this.vars.alpha; delete this.tweens.alpha; } else { _endColor.alphaMultiplier = this.target.alpha; }; if (((!((this.vars[_local2] == null))) && (!((this.vars[_local2] == ""))))){ _endColor.color = this.vars[_local2]; }; _local6 = new TweenLite(this, this.duration, {colorProxy:1, delay:_local1, overwrite:false, ease:this.vars.ease, runBackwards:this.vars.runBackwards}); _local6.endTarget = this.target; } else { if ((((_local2 == "volume")) && ((this.target is MovieClip)))){ _sound = this.target.soundTransform; _local7 = new TweenLite(this, this.duration, {volumeProxy:this.vars[_local2], ease:easeOut, delay:_local1, overwrite:false, runBackwards:this.vars.runBackwards}); _local7.endTarget = this.target; } else { if (this.target.hasOwnProperty(_local2)){ if (typeof(this.vars[_local2]) == "number"){ _local3 = (this.vars[_local2] - this.target[_local2]); } else { _local3 = Number(this.vars[_local2]); }; this.tweens[_local2] = {o:this.target, s:this.target[_local2], c:_local3}; } else { this.extraTweens[_local2] = {o:this.target, s:0, c:0, v:this.vars[_local2]}; }; }; }; }; }; }; if (this.vars.runBackwards == true){ for (_local2 in this.tweens) { _local8 = this.tweens[_local2]; this.tweens[_local2].s = (_local8.s + _local8.c); _local8.c = (_local8.c * -1); _local8.o[_local2] = _local8.s; }; if (this.vars.onUpdate != null){ this.vars.onUpdate.apply(null, this.vars.onUpdateParams); }; }; if (typeof(this.vars.autoAlpha) == "number"){ this.target.visible = !((((this.vars.runBackwards == true)) && ((this.target.alpha == 0)))); }; } public function render(_arg1:uint):void{ var _local2:Number; var _local3:Number; var _local4:Object; var _local5:String; _local2 = ((_arg1 - this.startTime) / 1000); if (_local2 > this.duration){ _local2 = this.duration; }; _local3 = this.vars.ease(_local2, 0, 1, this.duration); for (_local5 in this.tweens) { _local4 = this.tweens[_local5]; _local4.o[_local5] = (_local4.s + (_local3 * _local4.c)); }; if (this.vars.onUpdate != null){ this.vars.onUpdate.apply(null, this.vars.onUpdateParams); }; if (_local2 == this.duration){ complete(true); }; } public function set colorProxy(_arg1:Number):void{ var _local2:Number; _local2 = (1 - _arg1); this.target.transform.colorTransform = new ColorTransform(((_color.redMultiplier * _local2) + (_endColor.redMultiplier * _arg1)), ((_color.greenMultiplier * _local2) + (_endColor.greenMultiplier * _arg1)), ((_color.blueMultiplier * _local2) + (_endColor.blueMultiplier * _arg1)), ((_color.alphaMultiplier * _local2) + (_endColor.alphaMultiplier * _arg1)), ((_color.redOffset * _local2) + (_endColor.redOffset * _arg1)), ((_color.greenOffset * _local2) + (_endColor.greenOffset * _arg1)), ((_color.blueOffset * _local2) + (_endColor.blueOffset * _arg1)), ((_color.alphaOffset * _local2) + (_endColor.alphaOffset * _arg1))); } public function get volumeProxy():Number{ return (_sound.volume); } public function set volumeProxy(_arg1:Number):void{ _sound.volume = _arg1; this.target.soundTransform = _sound; } protected function easeProxy(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):Number{ return (this.vars.proxiedEase.apply(null, arguments.concat(this.vars.easeParams))); } public function complete(_arg1:Boolean=false):void{ if (!_arg1){ this.startTime = 0; render((this.duration * 1000)); return; }; if ((((typeof(this.vars.autoAlpha) == "number")) && ((this.target.alpha == 0)))){ this.target.visible = false; }; if (this.vars.onComplete != null){ this.vars.onComplete.apply(null, this.vars.onCompleteParams); }; removeTween(this); } public static function delayedCall(_arg1:Number, _arg2:Function, _arg3:Array=null):TweenLite{ return (new TweenLite(_arg2, 0, {delay:_arg1, onComplete:_arg2, onCompleteParams:_arg3, overwrite:false})); } public static function from(_arg1:Object, _arg2:Number, _arg3:Object):TweenLite{ _arg3.runBackwards = true; return (new TweenLite(_arg1, _arg2, _arg3)); } public static function removeTween(_arg1:TweenLite=null):void{ if (((!((_arg1 == null))) && (!((_all[_arg1.endTarget] == undefined))))){ delete _all[_arg1.endTarget][_arg1]; }; } protected static function easeOut(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):Number{ _arg1 = (_arg1 / _arg4); return ((((-(_arg3) * _arg1) * (_arg1 - 2)) + _arg2)); } public static function killGarbage(_arg1:TimerEvent):void{ var _local2:Object; var _local3:uint; var _local4:Boolean; var _local5:Object; var _local6:Object; var _local7:Object; _local2 = _all; _local3 = 0; for (_local5 in _local2) { _local4 = false; for (_local6 in _local2[_local5]) { _local4 = true; break; }; if (!_local4){ delete _local2[_local5]; } else { _local3++; }; }; if (_local3 == 0){ _sprite.removeEventListener(Event.ENTER_FRAME, executeAll); _timer.removeEventListener("timer", killGarbage); _timer.stop(); _listening = false; }; } public static function executeAll(_arg1:Event):void{ var _local2:Object; var _local3:uint; var _local4:Object; var _local5:Object; _local2 = _all; _local3 = getTimer(); for (_local4 in _local2) { for (_local5 in _local2[_local4]) { if (((!((_local2[_local4][_local5] == undefined))) && (_local2[_local4][_local5].active))){ _local2[_local4][_local5].render(_local3); if (_local2[_local4] == undefined){ break; }; }; }; }; } public static function to(_arg1:Object, _arg2:Number, _arg3:Object):TweenLite{ return (new TweenLite(_arg1, _arg2, _arg3)); } public static function killTweensOf(_arg1:Object=null, _arg2:Boolean=false):void{ var _local3:Object; var _local4:*; if (((!((_arg1 == null))) && (!((_all[_arg1] == undefined))))){ if (_arg2){ _local3 = _all[_arg1]; for (_local4 in _local3) { _local3[_local4].complete(false); }; }; delete _all[_arg1]; }; } } }//package gs
Section 12
//BBox (sandy.bounds.BBox) package sandy.bounds { import sandy.core.data.*; public class BBox { public var maxEdge:Point3D; public var uptodate:Boolean;// = false public var minEdge:Point3D; public function BBox(_arg1:Point3D=null, _arg2:Point3D=null){ uptodate = false; super(); minEdge = ((_arg1)!=null) ? _arg1 : new Point3D(-0.5, -0.5, -0.5); maxEdge = ((_arg2)!=null) ? _arg2 : new Point3D(0.5, 0.5, 0.5); } public function getEdges(_arg1:Array):void{ var _local2:Number; var _local3:Number; var _local4:Number; var _local5:Number; var _local6:Number; var _local7:Number; var _local8:Point3D; if (_arg1 == null){ return; }; _local2 = ((this.maxEdge.x + this.minEdge.x) / 2); _local3 = ((this.maxEdge.y + this.minEdge.y) / 2); _local4 = ((this.maxEdge.z + this.minEdge.z) / 2); _local5 = (_local2 - this.maxEdge.x); _local6 = (_local3 - this.maxEdge.y); _local7 = (_local4 - this.maxEdge.z); _local8 = _arg1[0]; _local8.x = (_local2 + _local5); _local8.y = (_local3 + _local6); _local8.z = (_local4 + _local7); _local8 = _arg1[1]; _local8.x = (_local2 + _local5); _local8.y = (_local3 - _local6); _local8.z = (_local4 + _local7); _local8 = _arg1[2]; _local8.x = (_local2 + _local5); _local8.y = (_local3 + _local6); _local8.z = (_local4 - _local7); _local8 = _arg1[3]; _local8.x = (_local2 + _local5); _local8.y = (_local3 - _local6); _local8.z = (_local4 - _local7); _local8 = _arg1[4]; _local8.x = (_local2 - _local5); _local8.y = (_local3 + _local6); _local8.z = (_local4 + _local7); _local8 = _arg1[5]; _local8.x = (_local2 - _local5); _local8.y = (_local3 - _local6); _local8.z = (_local4 + _local7); _local8 = _arg1[6]; _local8.x = (_local2 - _local5); _local8.y = (_local3 + _local6); _local8.z = (_local4 - _local7); _local8 = _arg1[7]; _local8.x = (_local2 - _local5); _local8.y = (_local3 - _local6); _local8.z = (_local4 - _local7); } public function isPointInsideXYZ(_arg1:Number, _arg2:Number, _arg3:Number):Boolean{ return ((((((((((((_arg1 >= this.minEdge.x)) && ((_arg1 <= this.maxEdge.x)))) && ((_arg2 >= this.minEdge.y)))) && ((_arg2 <= this.maxEdge.y)))) && ((_arg3 >= this.minEdge.z)))) && ((_arg3 <= this.maxEdge.z)))); } public function getCenter():Point3D{ return (new Point3D(((this.maxEdge.x + this.minEdge.x) / 2), ((this.maxEdge.y + this.minEdge.y) / 2), ((this.maxEdge.z + this.minEdge.z) / 2))); } public function transform(_arg1:Matrix4):BBox{ var _local2:BBox; var _local3:Array; var _local4:Point3D; _local2 = new BBox(); _local3 = [Pool.getInstance().nextPoint3D, Pool.getInstance().nextPoint3D, Pool.getInstance().nextPoint3D, Pool.getInstance().nextPoint3D, Pool.getInstance().nextPoint3D, Pool.getInstance().nextPoint3D, Pool.getInstance().nextPoint3D, Pool.getInstance().nextPoint3D]; getEdges(_local3); for each (_local4 in _local3) { _arg1.Point3DMult(_local4); _local2.addInternalPoint(_local4); }; return (_local2); } public function addInternalPointXYZ(_arg1:Number, _arg2:Number, _arg3:Number):void{ if (_arg1 > this.maxEdge.x){ this.maxEdge.x = _arg1; }; if (_arg2 > this.maxEdge.y){ this.maxEdge.y = _arg2; }; if (_arg3 > this.maxEdge.z){ this.maxEdge.z = _arg3; }; if (_arg1 < this.minEdge.x){ this.minEdge.x = _arg1; }; if (_arg2 < this.minEdge.y){ this.minEdge.y = _arg2; }; if (_arg3 < this.minEdge.z){ this.minEdge.z = _arg3; }; } public function getSize():Point3D{ return (new Point3D(Math.abs((maxEdge.x - minEdge.x)), Math.abs((maxEdge.y - minEdge.y)), Math.abs((maxEdge.z - minEdge.z)))); } public function reset():void{ minEdge.reset(); maxEdge.reset(); uptodate = false; } public function addInternalPoint(_arg1:Point3D):void{ if (_arg1.x > this.maxEdge.x){ this.maxEdge.x = _arg1.x; }; if (_arg1.y > this.maxEdge.y){ this.maxEdge.y = _arg1.y; }; if (_arg1.z > this.maxEdge.z){ this.maxEdge.z = _arg1.z; }; if (_arg1.x < this.minEdge.x){ this.minEdge.x = _arg1.x; }; if (_arg1.y < this.minEdge.y){ this.minEdge.y = _arg1.y; }; if (_arg1.z < this.minEdge.z){ this.minEdge.z = _arg1.z; }; } public function merge(_arg1:BBox):void{ this.addInternalPointXYZ(_arg1.maxEdge.x, _arg1.maxEdge.y, _arg1.maxEdge.z); this.addInternalPointXYZ(_arg1.minEdge.x, _arg1.minEdge.y, _arg1.minEdge.z); uptodate = false; } public function intersectsBox(_arg1:BBox):Boolean{ return ((((((((((((this.minEdge.x <= _arg1.maxEdge.x)) && ((this.minEdge.y <= _arg1.maxEdge.y)))) && ((this.minEdge.z <= _arg1.maxEdge.z)))) && ((this.maxEdge.x >= _arg1.minEdge.x)))) && ((this.maxEdge.y >= _arg1.minEdge.y)))) && ((this.maxEdge.z >= _arg1.minEdge.z)))); } public function isPointTotalInside(_arg1:Point3D):Boolean{ return ((((((((((((_arg1.x > this.minEdge.x)) && ((_arg1.x < this.maxEdge.x)))) && ((_arg1.y > this.minEdge.y)))) && ((_arg1.y < this.maxEdge.y)))) && ((_arg1.z > this.minEdge.z)))) && ((_arg1.z < this.maxEdge.z)))); } public function toString():String{ return (((("sandy.bounds.BBox " + minEdge) + " ") + maxEdge)); } public function clone():BBox{ var _local1:BBox; _local1 = new BBox(); _local1.maxEdge = maxEdge.clone(); _local1.minEdge = minEdge.clone(); return (_local1); } public static function create(_arg1:Array):BBox{ var _local2:BBox; var _local3:Vertex; if (_arg1.length == 0){ return (null); }; _local2 = new (BBox); for each (_local3 in _arg1) { _local2.addInternalPointXYZ(_local3.x, _local3.y, _local3.z); }; return (_local2); } } }//package sandy.bounds
Section 13
//BSphere (sandy.bounds.BSphere) package sandy.bounds { import sandy.core.data.*; public final class BSphere { public var uptodate:Boolean;// = false public var position:Point3D; public var radius:Number;// = 1 public var center:Point3D; public function BSphere(){ uptodate = false; center = new Point3D(); radius = 1; position = new Point3D(); super(); } public function transform(_arg1:Matrix4):void{ position.copy(center); _arg1.Point3DMult(position); uptodate = true; } private function computeRadius(_arg1:Array):Number{ var _local2:Number; var _local3:Number; var _local4:Number; var _local5:Number; var _local6:Number; var _local7:int; var _local8:int; _local6 = 0; _local8 = _arg1.length; while (_local7 < _local8) { _local2 = (_arg1[int(_local7)].x - center.x); _local3 = (_arg1[int(_local7)].x - center.x); _local4 = (_arg1[int(_local7)].x - center.x); _local5 = (((_local2 * _local2) + (_local3 * _local3)) + (_local4 * _local4)); if (_local5 > _local6){ _local6 = _local5; }; _local7++; }; return (Math.sqrt(_local6)); } public function resetFromBox(_arg1:BBox):void{ this.center.copy(_arg1.getCenter()); this.radius = Math.sqrt(((((_arg1.maxEdge.x - this.center.x) * (_arg1.maxEdge.x - this.center.x)) + ((_arg1.maxEdge.y - this.center.y) * (_arg1.maxEdge.y - this.center.y))) + ((_arg1.maxEdge.z - this.center.z) * (_arg1.maxEdge.z - this.center.z)))); } public function reset():void{ center.reset(); radius = 0; position.reset(); uptodate = false; } public function compute(_arg1:Array):void{ var _local2:Number; var _local3:Number; var _local4:Number; var _local5:Number; var _local6:int; var _local7:int; var _local8:int; var _local9:Vertex; var _local10:Vertex; var _local11:Number; var _local12:Vertex; var _local13:Vertex; if (_arg1.length == 0){ return; }; _local6 = 0; _local7 = 0; _local8 = _arg1.length; _local9 = _arg1[0].clone(); _local10 = _arg1[0].clone(); _local11 = 0; while (_local6 < _local8) { _local7 = (_local6 + 1); while (_local7 < _local8) { _local12 = _arg1[int(_local6)]; _local13 = _arg1[int(_local7)]; _local2 = (_local13.x - _local12.x); _local3 = (_local13.y - _local12.y); _local4 = (_local13.z - _local12.z); _local5 = (((_local2 * _local2) + (_local3 * _local3)) + (_local4 * _local4)); if (_local5 > _local11){ _local11 = _local5; _local9.copy(_local12); _local10.copy(_local13); }; _local7 = (_local7 + 1); }; _local6 = (_local6 + 1); }; center = new Point3D(((_local9.x + _local10.x) / 2), ((_local9.y + _local10.y) / 2), ((_local9.z + _local10.z) / 2)); radius = (Math.sqrt(_local11) / 2); } public function toString():String{ return ((((("sandy.bounds.BSphere (center : " + center) + ", radius : ") + radius) + ")")); } public function distance(_arg1:Point3D):Number{ var _local2:Number; var _local3:Number; var _local4:Number; _local2 = (_arg1.x - center.x); _local3 = (_arg1.y - center.y); _local4 = (_arg1.z - center.z); return ((Math.sqrt((((_local2 * _local2) + (_local3 * _local3)) + (_local4 * _local4))) - radius)); } private function pointsOutofSphere(_arg1:Array):Array{ var _local2:Array; var _local3:int; var _local4:int; _local2 = new Array(); _local4 = _arg1.length; while (_local3 < _local4) { if (distance(_arg1[int(_local3)]) > 0){ _local2.push(_arg1[int(_local3)]); }; _local3++; }; return (_local2); } public static function create(_arg1:Array):BSphere{ var _local2:BSphere; _local2 = new (BSphere); _local2.compute(_arg1); return (_local2); } } }//package sandy.bounds
Section 14
//Edge3D (sandy.core.data.Edge3D) package sandy.core.data { public final class Edge3D { public var vertex1:Vertex; public var vertex2:Vertex; public var vertexId1:uint; public var vertexId2:uint; public function Edge3D(_arg1:uint, _arg2:uint){ vertexId1 = _arg1; vertexId2 = _arg2; } public function clone():Edge3D{ var _local1:Edge3D; _local1 = new Edge3D(vertexId1, vertexId2); return (_local1); } } }//package sandy.core.data
Section 15
//Matrix4 (sandy.core.data.Matrix4) package sandy.core.data { import sandy.util.*; import sandy.math.*; public final class Matrix4 { private const _fastMathInitialized:Boolean; public var n11:Number; public var n12:Number; public var n13:Number; public var n14:Number; public var n21:Number; public var n22:Number; public var n23:Number; public var n24:Number; public var n31:Number; public var n32:Number; public var n33:Number; public var n34:Number; public var n41:Number; public var n42:Number; public var n43:Number; public var n44:Number; public static const USE_FAST_MATH:Boolean = false; public function Matrix4(_arg1:Number=1, _arg2:Number=0, _arg3:Number=0, _arg4:Number=0, _arg5:Number=0, _arg6:Number=1, _arg7:Number=0, _arg8:Number=0, _arg9:Number=0, _arg10:Number=0, _arg11:Number=1, _arg12:Number=0, _arg13:Number=0, _arg14:Number=0, _arg15:Number=0, _arg16:Number=1){ _fastMathInitialized = FastMath.initialized; super(); n11 = _arg1; n12 = _arg2; n13 = _arg3; n14 = _arg4; n21 = _arg5; n22 = _arg6; n23 = _arg7; n24 = _arg8; n31 = _arg9; n32 = _arg10; n33 = _arg11; n34 = _arg12; n41 = _arg13; n42 = _arg14; n43 = _arg15; n44 = _arg16; } final public function multiply3x3(_arg1:Matrix4):void{ var _local2:Number; var _local3:Number; var _local4:Number; var _local5:Number; var _local6:Number; var _local7:Number; var _local8:Number; var _local9:Number; var _local10:Number; var _local11:Number; var _local12:Number; var _local13:Number; var _local14:Number; var _local15:Number; var _local16:Number; var _local17:Number; var _local18:Number; var _local19:Number; _local2 = n11; _local3 = _arg1.n11; _local4 = n21; _local5 = _arg1.n21; _local6 = n31; _local7 = _arg1.n31; _local8 = n12; _local9 = _arg1.n12; _local10 = n22; _local11 = _arg1.n22; _local12 = n32; _local13 = _arg1.n32; _local14 = n13; _local15 = _arg1.n13; _local16 = n23; _local17 = _arg1.n23; _local18 = n33; _local19 = _arg1.n33; n11 = (((_local2 * _local3) + (_local8 * _local5)) + (_local14 * _local7)); n12 = (((_local2 * _local9) + (_local8 * _local11)) + (_local14 * _local13)); n13 = (((_local2 * _local15) + (_local8 * _local17)) + (_local14 * _local19)); n21 = (((_local4 * _local3) + (_local10 * _local5)) + (_local16 * _local7)); n22 = (((_local4 * _local9) + (_local10 * _local11)) + (_local16 * _local13)); n23 = (((_local4 * _local15) + (_local10 * _local17)) + (_local16 * _local19)); n31 = (((_local6 * _local3) + (_local12 * _local5)) + (_local18 * _local7)); n32 = (((_local6 * _local9) + (_local12 * _local11)) + (_local18 * _local13)); n33 = (((_local6 * _local15) + (_local12 * _local17)) + (_local18 * _local19)); n14 = (n24 = (n34 = (n41 = (n42 = (n43 = 0))))); n44 = 1; } final public function det():Number{ return (((((((((n11 * n22) - (n21 * n12)) * ((n33 * n44) - (n43 * n34))) - (((n11 * n32) - (n31 * n12)) * ((n23 * n44) - (n43 * n24)))) + (((n11 * n42) - (n41 * n12)) * ((n23 * n34) - (n33 * n24)))) + (((n21 * n32) - (n31 * n22)) * ((n13 * n44) - (n43 * n14)))) - (((n21 * n42) - (n41 * n22)) * ((n13 * n34) - (n33 * n14)))) + (((n31 * n42) - (n41 * n32)) * ((n13 * n24) - (n23 * n14))))); } final public function translationPoint3D(_arg1:Point3D):void{ identity(); n14 = _arg1.x; n24 = _arg1.y; n34 = _arg1.z; } final public function rotationY(_arg1:Number):void{ var _local2:Number; var _local3:Number; identity(); _arg1 = NumberUtil.toRadian(_arg1); _local2 = ((USE_FAST_MATH)==false) ? Math.cos(_arg1) : FastMath.cos(_arg1); _local3 = ((USE_FAST_MATH)==false) ? Math.sin(_arg1) : FastMath.sin(_arg1); n11 = _local2; n13 = -(_local3); n31 = _local3; n33 = _local2; } final public function eulerRotation(_arg1:Number, _arg2:Number, _arg3:Number):void{ var _local4:Number; var _local5:Number; var _local6:Number; var _local7:Number; var _local8:Number; var _local9:Number; var _local10:Number; var _local11:Number; identity(); _arg1 = -(NumberUtil.toRadian(_arg1)); _arg2 = NumberUtil.toRadian(_arg2); _arg3 = -(NumberUtil.toRadian(_arg3)); _local4 = ((USE_FAST_MATH)==false) ? Math.cos(_arg1) : FastMath.cos(_arg1); _local5 = ((USE_FAST_MATH)==false) ? Math.sin(_arg1) : FastMath.sin(_arg1); _local6 = ((USE_FAST_MATH)==false) ? Math.cos(_arg2) : FastMath.cos(_arg2); _local7 = ((USE_FAST_MATH)==false) ? Math.sin(_arg2) : FastMath.sin(_arg2); _local8 = ((USE_FAST_MATH)==false) ? Math.cos(_arg3) : FastMath.cos(_arg3); _local9 = ((USE_FAST_MATH)==false) ? Math.sin(_arg3) : FastMath.sin(_arg3); _local10 = (_local4 * _local7); _local11 = (_local5 * _local7); n11 = (_local6 * _local8); n12 = (_local6 * _local9); n13 = -(_local7); n21 = ((_local11 * _local8) - (_local4 * _local9)); n22 = ((_local11 * _local9) + (_local4 * _local8)); n23 = (_local5 * _local6); n31 = ((_local10 * _local8) + (_local5 * _local9)); n32 = ((_local10 * _local9) - (_local5 * _local8)); n33 = (_local4 * _local6); } final public function rotationX(_arg1:Number):void{ var _local2:Number; var _local3:Number; identity(); _arg1 = NumberUtil.toRadian(_arg1); _local2 = ((USE_FAST_MATH)==false) ? Math.cos(_arg1) : FastMath.cos(_arg1); _local3 = ((USE_FAST_MATH)==false) ? Math.sin(_arg1) : FastMath.sin(_arg1); n22 = _local2; n23 = -(_local3); n32 = _local3; n33 = _local2; } final public function multiply(_arg1:Matrix4):void{ var _local2:Number; var _local3:Number; var _local4:Number; var _local5:Number; var _local6:Number; var _local7:Number; var _local8:Number; var _local9:Number; var _local10:Number; var _local11:Number; var _local12:Number; var _local13:Number; var _local14:Number; var _local15:Number; var _local16:Number; var _local17:Number; var _local18:Number; var _local19:Number; var _local20:Number; var _local21:Number; var _local22:Number; var _local23:Number; var _local24:Number; var _local25:Number; var _local26:Number; var _local27:Number; var _local28:Number; var _local29:Number; var _local30:Number; var _local31:Number; var _local32:Number; var _local33:Number; _local2 = n11; _local3 = n21; _local4 = n31; _local5 = n41; _local6 = n12; _local7 = n22; _local8 = n32; _local9 = n42; _local10 = n13; _local11 = n23; _local12 = n33; _local13 = n43; _local14 = n14; _local15 = n24; _local16 = n34; _local17 = n44; _local18 = _arg1.n11; _local19 = _arg1.n21; _local20 = _arg1.n31; _local21 = _arg1.n41; _local22 = _arg1.n12; _local23 = _arg1.n22; _local24 = _arg1.n32; _local25 = _arg1.n42; _local26 = _arg1.n13; _local27 = _arg1.n23; _local28 = _arg1.n33; _local29 = _arg1.n43; _local30 = _arg1.n14; _local31 = _arg1.n24; _local32 = _arg1.n34; _local33 = _arg1.n44; n11 = ((((_local2 * _local18) + (_local6 * _local19)) + (_local10 * _local20)) + (_local14 * _local21)); n12 = ((((_local2 * _local22) + (_local6 * _local23)) + (_local10 * _local24)) + (_local14 * _local25)); n13 = ((((_local2 * _local26) + (_local6 * _local27)) + (_local10 * _local28)) + (_local14 * _local29)); n14 = ((((_local2 * _local30) + (_local6 * _local31)) + (_local10 * _local32)) + (_local14 * _local33)); n21 = ((((_local3 * _local18) + (_local7 * _local19)) + (_local11 * _local20)) + (_local15 * _local21)); n22 = ((((_local3 * _local22) + (_local7 * _local23)) + (_local11 * _local24)) + (_local15 * _local25)); n23 = ((((_local3 * _local26) + (_local7 * _local27)) + (_local11 * _local28)) + (_local15 * _local29)); n24 = ((((_local3 * _local30) + (_local7 * _local31)) + (_local11 * _local32)) + (_local15 * _local33)); n31 = ((((_local4 * _local18) + (_local8 * _local19)) + (_local12 * _local20)) + (_local16 * _local21)); n32 = ((((_local4 * _local22) + (_local8 * _local23)) + (_local12 * _local24)) + (_local16 * _local25)); n33 = ((((_local4 * _local26) + (_local8 * _local27)) + (_local12 * _local28)) + (_local16 * _local29)); n34 = ((((_local4 * _local30) + (_local8 * _local31)) + (_local12 * _local32)) + (_local16 * _local33)); n41 = ((((_local5 * _local18) + (_local9 * _local19)) + (_local13 * _local20)) + (_local17 * _local21)); n42 = ((((_local5 * _local22) + (_local9 * _local23)) + (_local13 * _local24)) + (_local17 * _local25)); n43 = ((((_local5 * _local26) + (_local9 * _local27)) + (_local13 * _local28)) + (_local17 * _local29)); n44 = ((((_local5 * _local30) + (_local9 * _local31)) + (_local13 * _local32)) + (_local17 * _local33)); } final public function axisRotationWithReference(_arg1:Point3D, _arg2:Point3D, _arg3:Number):void{ var _local4:Matrix4; var _local5:Number; _local4 = new Matrix4(); _local5 = ((_arg3 + 360) % 360); translation(_arg2.x, _arg2.y, _arg2.z); _local4.axisRotation(_arg1.x, _arg1.y, _arg1.z, _local5); multiply(_local4); _local4.translation(-(_arg2.x), -(_arg2.y), -(_arg2.z)); multiply(_local4); _local4 = null; } final public function getTrace():Number{ return ((((n11 + n22) + n33) + n44)); } final public function zero():void{ n11 = 0; n12 = 0; n13 = 0; n14 = 0; n21 = 0; n22 = 0; n23 = 0; n24 = 0; n31 = 0; n32 = 0; n33 = 0; n34 = 0; n41 = 0; n42 = 0; n43 = 0; n44 = 0; } final public function rotationZ(_arg1:Number):void{ var _local2:Number; var _local3:Number; identity(); _arg1 = NumberUtil.toRadian(_arg1); _local2 = ((USE_FAST_MATH)==false) ? Math.cos(_arg1) : FastMath.cos(_arg1); _local3 = ((USE_FAST_MATH)==false) ? Math.sin(_arg1) : FastMath.sin(_arg1); n11 = _local2; n12 = -(_local3); n21 = _local3; n22 = _local2; } final public function Point3DMult(_arg1:Point3D):void{ var _local2:Number; var _local3:Number; var _local4:Number; _local2 = _arg1.x; _local3 = _arg1.y; _local4 = _arg1.z; _arg1.x = ((((_local2 * n11) + (_local3 * n12)) + (_local4 * n13)) + n14); _arg1.y = ((((_local2 * n21) + (_local3 * n22)) + (_local4 * n23)) + n24); _arg1.z = ((((_local2 * n31) + (_local3 * n32)) + (_local4 * n33)) + n34); } final public function getEulerAngles():Point3D{ var _local1:Number; var _local2:Number; var _local3:Number; var _local4:Number; _local1 = 57.295779513; _local2 = (Math.asin(-(this.n13)) * _local1); if (!NumberUtil.isZero((Math.abs(this.n13) - 1))){ _local3 = (-(Math.atan2(this.n23, this.n33)) * _local1); _local4 = (-(Math.atan2(this.n12, this.n11)) * _local1); } else { _local3 = 0; _local4 = Math.atan2(-(this.n21), this.n22); }; if (_local3 < 0){ _local3 = (_local3 + 360); }; if (_local2 < 0){ _local2 = (_local2 + 360); }; if (_local4 < 0){ _local4 = (_local4 + 360); }; return (new Point3D(_local3, _local2, _local4)); } final public function inverse():void{ var _local1:Number; var _local2:Number; var _local3:Number; var _local4:Number; var _local5:Number; var _local6:Number; var _local7:Number; var _local8:Number; var _local9:Number; var _local10:Number; var _local11:Number; var _local12:Number; var _local13:Number; var _local14:Number; var _local15:Number; var _local16:Number; var _local17:Number; _local1 = det(); if (Math.abs(_local1) < 0.001){ throw (new Error("cannot invert a matrix with a null determinant")); }; _local1 = (1 / _local1); _local2 = n11; _local3 = n21; _local4 = n31; _local5 = n41; _local6 = n12; _local7 = n22; _local8 = n32; _local9 = n42; _local10 = n13; _local11 = n23; _local12 = n33; _local13 = n43; _local14 = n14; _local15 = n24; _local16 = n34; _local17 = n44; n11 = (_local1 * (((_local7 * ((_local12 * _local17) - (_local13 * _local16))) - (_local8 * ((_local11 * _local17) - (_local13 * _local15)))) + (_local9 * ((_local11 * _local16) - (_local12 * _local15))))); n12 = (-(_local1) * (((_local6 * ((_local12 * _local17) - (_local13 * _local16))) - (_local8 * ((_local10 * _local17) - (_local13 * _local14)))) + (_local9 * ((_local10 * _local16) - (_local12 * _local14))))); n13 = (_local1 * (((_local6 * ((_local11 * _local17) - (_local13 * _local15))) - (_local7 * ((_local10 * _local17) - (_local13 * _local14)))) + (_local9 * ((_local10 * _local15) - (_local11 * _local14))))); n14 = (-(_local1) * (((_local6 * ((_local11 * _local16) - (_local12 * _local15))) - (_local7 * ((_local10 * _local16) - (_local12 * _local14)))) + (_local8 * ((_local10 * _local15) - (_local11 * _local14))))); n21 = (-(_local1) * (((_local3 * ((_local12 * _local17) - (_local13 * _local16))) - (_local4 * ((_local11 * _local17) - (_local13 * _local15)))) + (_local5 * ((_local11 * _local16) - (_local12 * _local15))))); n22 = (_local1 * (((_local2 * ((_local12 * _local17) - (_local13 * _local16))) - (_local4 * ((_local10 * _local17) - (_local13 * _local14)))) + (_local5 * ((_local10 * _local16) - (_local12 * _local14))))); n23 = (-(_local1) * (((_local2 * ((_local11 * _local17) - (_local13 * _local15))) - (_local3 * ((_local10 * _local17) - (_local13 * _local14)))) + (_local5 * ((_local10 * _local15) - (_local11 * _local14))))); n24 = (_local1 * (((_local2 * ((_local11 * _local16) - (_local12 * _local15))) - (_local3 * ((_local10 * _local16) - (_local12 * _local14)))) + (_local4 * ((_local10 * _local15) - (_local11 * _local14))))); n31 = (_local1 * (((_local3 * ((_local8 * _local17) - (_local9 * _local16))) - (_local4 * ((_local7 * _local17) - (_local9 * _local15)))) + (_local5 * ((_local7 * _local16) - (_local8 * _local15))))); n32 = (-(_local1) * (((_local2 * ((_local8 * _local17) - (_local9 * _local16))) - (_local4 * ((_local6 * _local17) - (_local9 * _local14)))) + (_local5 * ((_local6 * _local16) - (_local8 * _local14))))); n33 = (_local1 * (((_local2 * ((_local7 * _local17) - (_local9 * _local15))) - (_local3 * ((_local6 * _local17) - (_local9 * _local14)))) + (_local5 * ((_local6 * _local15) - (_local7 * _local14))))); n34 = (-(_local1) * (((_local2 * ((_local7 * _local16) - (_local8 * _local15))) - (_local3 * ((_local6 * _local16) - (_local8 * _local14)))) + (_local4 * ((_local6 * _local15) - (_local7 * _local14))))); n41 = (-(_local1) * (((_local3 * ((_local8 * _local13) - (_local9 * _local12))) - (_local4 * ((_local7 * _local13) - (_local9 * _local11)))) + (_local5 * ((_local7 * _local12) - (_local8 * _local11))))); n42 = (_local1 * (((_local2 * ((_local8 * _local13) - (_local9 * _local12))) - (_local4 * ((_local6 * _local13) - (_local9 * _local10)))) + (_local5 * ((_local6 * _local12) - (_local8 * _local10))))); n43 = (-(_local1) * (((_local2 * ((_local7 * _local13) - (_local9 * _local11))) - (_local3 * ((_local6 * _local13) - (_local9 * _local10)))) + (_local5 * ((_local6 * _local11) - (_local7 * _local10))))); n44 = (_local1 * (((_local2 * ((_local7 * _local12) - (_local8 * _local11))) - (_local3 * ((_local6 * _local12) - (_local8 * _local10)))) + (_local4 * ((_local6 * _local11) - (_local7 * _local10))))); } final public function translation(_arg1:Number, _arg2:Number, _arg3:Number):void{ identity(); n14 = _arg1; n24 = _arg2; n34 = _arg3; } final public function det3x3():Number{ return ((((n11 * ((n22 * n33) - (n23 * n32))) + (n21 * ((n32 * n13) - (n12 * n33)))) + (n31 * ((n12 * n23) - (n22 * n13))))); } final public function identity():void{ n11 = 1; n12 = 0; n13 = 0; n14 = 0; n21 = 0; n22 = 1; n23 = 0; n24 = 0; n31 = 0; n32 = 0; n33 = 1; n34 = 0; n41 = 0; n42 = 0; n43 = 0; n44 = 1; } final public function axisRotation(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):void{ 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; identity(); _arg4 = NumberUtil.toRadian(_arg4); _local5 = ((USE_FAST_MATH)==false) ? Math.cos(_arg4) : FastMath.cos(_arg4); _local6 = ((USE_FAST_MATH)==false) ? Math.sin(_arg4) : FastMath.sin(_arg4); _local7 = (1 - _local5); _local8 = ((_arg1 * _arg2) * _local7); _local9 = ((_arg2 * _arg3) * _local7); _local10 = ((_arg1 * _arg3) * _local7); _local11 = (_local6 * _arg3); _local12 = (_local6 * _arg2); _local13 = (_local6 * _arg1); n11 = (_local5 + ((_arg1 * _arg1) * _local7)); n12 = (-(_local11) + _local8); n13 = (_local12 + _local10); n21 = (_local11 + _local8); n22 = (_local5 + ((_arg2 * _arg2) * _local7)); n23 = (-(_local13) + _local9); n31 = (-(_local12) + _local10); n32 = (_local13 + _local9); n33 = (_local5 + ((_arg3 * _arg3) * _local7)); } final public function addMatrix(_arg1:Matrix4):void{ n11 = (n11 + _arg1.n11); n12 = (n12 + _arg1.n12); n13 = (n13 + _arg1.n13); n14 = (n14 + _arg1.n14); n21 = (n21 + _arg1.n21); n22 = (n22 + _arg1.n22); n23 = (n23 + _arg1.n23); n24 = (n24 + _arg1.n24); n31 = (n31 + _arg1.n31); n32 = (n32 + _arg1.n32); n33 = (n33 + _arg1.n33); n34 = (n34 + _arg1.n34); n41 = (n41 + _arg1.n41); n42 = (n42 + _arg1.n42); n43 = (n43 + _arg1.n43); n44 = (n44 + _arg1.n44); } final public function axisRotationPoint3D(_arg1:Point3D, _arg2:Number):void{ axisRotation(_arg1.x, _arg1.y, _arg1.z, _arg2); } final public function scale(_arg1:Number, _arg2:Number, _arg3:Number):void{ identity(); n11 = _arg1; n22 = _arg2; n33 = _arg3; } final public function multiply4x3(_arg1:Matrix4):void{ var _local2:Number; var _local3:Number; var _local4:Number; var _local5:Number; var _local6:Number; var _local7:Number; var _local8:Number; var _local9:Number; var _local10:Number; 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; _local2 = n11; _local3 = _arg1.n11; _local4 = n21; _local5 = _arg1.n21; _local6 = n31; _local7 = _arg1.n31; _local8 = n12; _local9 = _arg1.n12; _local10 = n22; _local11 = _arg1.n22; _local12 = n32; _local13 = _arg1.n32; _local14 = n13; _local15 = _arg1.n13; _local16 = n23; _local17 = _arg1.n23; _local18 = n33; _local19 = _arg1.n33; _local20 = _arg1.n14; _local21 = _arg1.n24; _local22 = _arg1.n34; n11 = (((_local2 * _local3) + (_local8 * _local5)) + (_local14 * _local7)); n12 = (((_local2 * _local9) + (_local8 * _local11)) + (_local14 * _local13)); n13 = (((_local2 * _local15) + (_local8 * _local17)) + (_local14 * _local19)); n14 = ((((_local20 * _local2) + (_local21 * _local8)) + (_local22 * _local14)) + n14); n21 = (((_local4 * _local3) + (_local10 * _local5)) + (_local16 * _local7)); n22 = (((_local4 * _local9) + (_local10 * _local11)) + (_local16 * _local13)); n23 = (((_local4 * _local15) + (_local10 * _local17)) + (_local16 * _local19)); n24 = ((((_local20 * _local4) + (_local21 * _local10)) + (_local22 * _local16)) + n24); n31 = (((_local6 * _local3) + (_local12 * _local5)) + (_local18 * _local7)); n32 = (((_local6 * _local9) + (_local12 * _local11)) + (_local18 * _local13)); n33 = (((_local6 * _local15) + (_local12 * _local17)) + (_local18 * _local19)); n34 = ((((_local20 * _local6) + (_local21 * _local12)) + (_local22 * _local18)) + n34); n41 = (n42 = (n43 = 0)); n44 = 1; } final public function scalePoint3D(_arg1:Point3D):void{ identity(); n11 = _arg1.x; n22 = _arg1.y; n33 = _arg1.z; } final public function fromPoint3Ds(_arg1:Point3D, _arg2:Point3D, _arg3:Point3D, _arg4:Point3D):void{ zero(); n11 = _arg1.x; n21 = _arg1.y; n31 = _arg1.z; n12 = _arg2.x; n22 = _arg2.y; n32 = _arg2.z; n13 = _arg3.x; n23 = _arg3.y; n33 = _arg3.z; n14 = _arg4.x; n24 = _arg4.y; n34 = _arg4.z; } final public function clone():Matrix4{ return (new Matrix4(n11, n12, n13, n14, n21, n22, n23, n24, n31, n32, n33, n34, n41, n42, n43, n44)); } final public function Point3DMult3x3(_arg1:Point3D):void{ var _local2:Number; var _local3:Number; var _local4:Number; _local2 = _arg1.x; _local3 = _arg1.y; _local4 = _arg1.z; _arg1.x = (((_local2 * n11) + (_local3 * n12)) + (_local4 * n13)); _arg1.y = (((_local2 * n21) + (_local3 * n22)) + (_local4 * n23)); _arg1.z = (((_local2 * n31) + (_local3 * n32)) + (_local4 * n33)); } public function serialize(_arg1:Number=1E-6):String{ var _local2:Function; var _local3:String; _local2 = NumberUtil.roundTo; _local3 = new String(""); _local3 = (_local3 + (((((((_local2(n11, _arg1) + ",") + _local2(n12, _arg1)) + ",") + _local2(n13, _arg1)) + ",") + _local2(n14, _arg1)) + ",")); _local3 = (_local3 + (((((((_local2(n21, _arg1) + ",") + _local2(n22, _arg1)) + ",") + _local2(n23, _arg1)) + ",") + _local2(n24, _arg1)) + ",")); _local3 = (_local3 + (((((((_local2(n31, _arg1) + ",") + _local2(n32, _arg1)) + ",") + _local2(n33, _arg1)) + ",") + _local2(n34, _arg1)) + ",")); _local3 = (_local3 + ((((((_local2(n41, _arg1) + ",") + _local2(n42, _arg1)) + ",") + _local2(n43, _arg1)) + ",") + _local2(n44, _arg1))); return (_local3); } final public function toString():String{ var _local1:String; _local1 = ("sandy.core.data.Matrix4" + "\n ("); _local1 = (_local1 + (((((((n11 + "\t") + n12) + "\t") + n13) + "\t") + n14) + "\n")); _local1 = (_local1 + (((((((n21 + "\t") + n22) + "\t") + n23) + "\t") + n24) + "\n")); _local1 = (_local1 + (((((((n31 + "\t") + n32) + "\t") + n33) + "\t") + n34) + "\n")); _local1 = (_local1 + (((((((n41 + "\t") + n42) + "\t") + n43) + "\t") + n44) + "\n)")); return (_local1); } final public function copy(_arg1:Matrix4):void{ n11 = _arg1.n11; n12 = _arg1.n12; n13 = _arg1.n13; n14 = _arg1.n14; n21 = _arg1.n21; n22 = _arg1.n22; n23 = _arg1.n23; n24 = _arg1.n24; n31 = _arg1.n31; n32 = _arg1.n32; n33 = _arg1.n33; n34 = _arg1.n34; n41 = _arg1.n41; n42 = _arg1.n42; n43 = _arg1.n43; n44 = _arg1.n44; } final public function getTranslation():Point3D{ return (new Point3D(n14, n24, n34)); } public static function deserialize(_arg1:String):Matrix4{ var _local2:Array; var _local3:Number; var _local4:Matrix4; _local2 = _arg1.split(","); if (_local2.length != 16){ trace(("Unexpected length of string to deserialize into a matrix4 " + _arg1)); }; _local3 = 0; while (_local3 < _local2.length) { _local2[_local3] = Number(_local2[_local3]); _local3++; }; _local4 = new Matrix4(_local2[0], _local2[1], _local2[2], _local2[3], _local2[4], _local2[5], _local2[6], _local2[7], _local2[8], _local2[9], _local2[10], _local2[11], _local2[12], _local2[13], _local2[14], _local2[15]); return (_local4); } } }//package sandy.core.data
Section 16
//Plane (sandy.core.data.Plane) package sandy.core.data { public final class Plane { public var a:Number; public var c:Number; public var b:Number; public var d:Number; public function Plane(_arg1:Number=0, _arg2:Number=0, _arg3:Number=0, _arg4:Number=0){ this.a = _arg1; this.b = _arg2; this.c = _arg3; this.d = _arg4; } public function toString():String{ return (((((((((("sandy.core.data.Plane" + "(a:") + a) + ", b:") + b) + ", c:") + c) + ", d:") + d) + ")")); } } }//package sandy.core.data
Section 17
//Point3D (sandy.core.data.Point3D) package sandy.core.data { import sandy.util.*; public final class Point3D { public var y:Number; public var x:Number; public var z:Number; public function Point3D(_arg1:Number=0, _arg2:Number=0, _arg3:Number=0){ x = _arg1; y = _arg2; z = _arg3; } final public function sub(_arg1:Point3D):void{ x = (x - _arg1.x); y = (y - _arg1.y); z = (z - _arg1.z); } final public function negate():Point3D{ return (new Point3D(-(x), -(y), -(z))); } final public function dot(_arg1:Point3D):Number{ return ((((x * _arg1.x) + (y * _arg1.y)) + (z * _arg1.z))); } final public function scale(_arg1:Number):void{ x = (x * _arg1); y = (y * _arg1); z = (z * _arg1); } public function resetToPositiveInfinity():void{ x = (y = (z = Number.POSITIVE_INFINITY)); } final public function normalize():void{ var _local1:Number; _local1 = getNorm(); if ((((_local1 == 0)) || ((_local1 == 1)))){ return; }; x = (x / _local1); y = (y / _local1); z = (z / _local1); } public function resetToNegativeInfinity():void{ x = (y = (z = Number.NEGATIVE_INFINITY)); } final public function cross(_arg1:Point3D):Point3D{ return (new Point3D(((y * _arg1.z) - (z * _arg1.y)), ((z * _arg1.x) - (x * _arg1.z)), ((x * _arg1.y) - (y * _arg1.x)))); } final public function getMinComponent():Number{ return (Math.min(x, Math.min(y, z))); } public function reset(_arg1:Number=0, _arg2:Number=0, _arg3:Number=0):void{ x = _arg1; y = _arg2; z = _arg3; } final public function pow(_arg1:Number):void{ x = Math.pow(x, _arg1); y = Math.pow(y, _arg1); z = Math.pow(z, _arg1); } final public function clone():Point3D{ var _local1:Point3D; _local1 = new Point3D(x, y, z); return (_local1); } public function serialize(_arg1:Number=0.1):String{ return (((((NumberUtil.roundTo(x, _arg1) + ",") + NumberUtil.roundTo(y, _arg1)) + ",") + NumberUtil.roundTo(z, _arg1))); } final public function add(_arg1:Point3D):void{ x = (x + _arg1.x); y = (y + _arg1.y); z = (z + _arg1.z); } final public function getAngle(_arg1:Point3D):Number{ var _local2:Number; var _local3:Number; var _local4:Number; var _local5:Number; var _local6:Number; _local2 = getNorm(); _local3 = _arg1.getNorm(); _local4 = (_local2 * _local3); if (_local4 == 0){ return (0); }; _local5 = (dot(_arg1) / _local4); _local6 = (1 - (_local5 * _local5)); if (_local6 < 0){ trace((" wrong " + _local5)); _local6 = 0; }; return (Math.atan2(Math.sqrt(_local6), _local5)); } final public function crossWith(_arg1:Point3D):void{ var _local2:Number; var _local3:Number; var _local4:Number; _local2 = ((y * _arg1.z) - (z * _arg1.y)); _local3 = ((z * _arg1.x) - (x * _arg1.z)); _local4 = ((x * _arg1.y) - (y * _arg1.x)); x = _local2; y = _local3; z = _local4; } final public function toString(_arg1:Number=0):String{ return ((("{" + serialize(Math.pow(10, -(_arg1)))) + "}")); } final public function getMaxComponent():Number{ return (Math.max(x, Math.max(y, z))); } final public function getNorm():Number{ return (Math.sqrt((((x * x) + (y * y)) + (z * z)))); } final public function copy(_arg1:Point3D):void{ x = _arg1.x; y = _arg1.y; z = _arg1.z; } final public function equals(_arg1:Point3D):Boolean{ return ((((((_arg1.x == x)) && ((_arg1.y == y)))) && ((_arg1.z == z)))); } public static function deserialize(_arg1:String):Point3D{ var _local2:Array; var _local3:Number; _local2 = _arg1.split(","); if (_local2.length != 3){ trace(("Unexpected length of string to deserialize into a Point3D " + _arg1)); }; _local3 = 0; while (_local3 < _local2.length) { _local2[_local3] = Number(_local2[_local3]); _local3++; }; return (new Point3D(_local2[0], _local2[1], _local2[2])); } } }//package sandy.core.data
Section 18
//Polygon (sandy.core.data.Polygon) package sandy.core.data { import sandy.materials.*; import sandy.core.*; import flash.display.*; import sandy.core.scenegraph.*; import flash.events.*; import sandy.events.*; import sandy.view.*; import flash.geom.*; import sandy.core.interaction.*; import flash.utils.*; import sandy.math.*; public final class Polygon implements IDisplayable { public const id:uint; protected var m_oContainer:Sprite; private var m_nDepth:Number; protected var m_oEB:BubbleEventBroadcaster; private var m_nNormalId:uint; public var shape:Shape3D; private var mouseEvents:Boolean;// = false public var vertexNormals:Array; public var aNeighboors:Array; public var isClipped:Boolean;// = false public var caUVCoord:Array; public var uvBounds:Rectangle; private var m_oGeometry:Geometry3D; public var minZ:Number; public var aUVCoord:Array; private var mouseInteractivity:Boolean;// = false public var cvertices:Array; public var a:Vertex; public var c:Vertex; private var m_oAppearance:Appearance; public var b:Vertex; public var d:Vertex; private var m_oScene:Scene3D;// = null public var visible:Boolean; public var aEdges:Array; public var vertices:Array; private static var _ID_:uint = 0; public static var POLYGON_MAP:Dictionary = new Dictionary(true); public function Polygon(_arg1:Shape3D, _arg2:Geometry3D, _arg3:Array, _arg4:Array=null, _arg5:Number=0, _arg6:uint=0){ id = _ID_++; isClipped = false; aNeighboors = new Array(); m_oScene = null; mouseEvents = false; mouseInteractivity = false; super(); shape = _arg1; m_oGeometry = _arg2; __update(_arg3, _arg4, _arg5, _arg6); m_oContainer = new Sprite(); POLYGON_MAP[id] = this; m_oEB = new BubbleEventBroadcaster(this); } private function _finishMaterial(_arg1:SandyEvent):void{ if (!m_oAppearance){ return; }; if (!visible){ return; }; m_oAppearance.frontMaterial.finish(scene); if (m_oAppearance.backMaterial != m_oAppearance.frontMaterial){ m_oAppearance.backMaterial.finish(scene); }; } public function createNormal():Point3D{ var _local1:Point3D; var _local2:Point3D; var _local3:Vertex; var _local4:Vertex; var _local5:Vertex; var _local6:Point3D; if (vertices.length > 2){ _local3 = vertices[0]; _local4 = vertices[1]; _local5 = vertices[2]; _local1 = new Point3D((_local4.x - _local3.x), (_local4.y - _local3.y), (_local4.z - _local3.z)); _local2 = new Point3D((_local4.x - _local5.x), (_local4.y - _local5.y), (_local4.z - _local5.z)); _local6 = Point3DMath.cross(_local1, _local2); Point3DMath.normalize(_local6); return (_local6); }; return (new Point3D()); } public function toString():String{ return ((((("sandy.core.data.Polygon::id=" + id) + " [Points: ") + vertices.length) + "]")); } public function set depth(_arg1:Number):void{ m_nDepth = _arg1; } private function _beginMaterial(_arg1:SandyEvent):void{ if (!m_oAppearance){ return; }; if (!visible){ return; }; m_oAppearance.frontMaterial.begin(scene); if (m_oAppearance.backMaterial != m_oAppearance.frontMaterial){ m_oAppearance.backMaterial.begin(scene); }; } public function get scene():Scene3D{ return (m_oScene); } public function get appearance():Appearance{ return (m_oAppearance); } protected function _onTextureInteraction(_arg1:Event=null):void{ var _local2:Point; var _local3:UVCoord; if ((((_arg1 == null)) || (!((_arg1 is MouseEvent))))){ _arg1 = new MouseEvent(MouseEvent.MOUSE_MOVE, true, false, 0, 0, null, false, false, false, false, 0); }; _local2 = new Point(scene.container.mouseX, scene.container.mouseY); _local3 = getUVFrom2D(_local2); VirtualMouse.getInstance().interactWithTexture(this, _local3, (_arg1 as MouseEvent)); _onInteraction(_arg1); } public function updateNormal():void{ var _local1:Number; var _local2:Number; var _local3:Number; _local1 = (((a.y - b.y) * (c.z - b.z)) - ((a.z - b.z) * (c.y - b.y))); _local2 = (((a.z - b.z) * (c.x - b.x)) - ((a.x - b.x) * (c.z - b.z))); _local3 = (((a.x - b.x) * (c.y - b.y)) - ((a.y - b.y) * (c.x - b.x))); normal.reset(_local1, _local2, _local3); } public function set scene(_arg1:Scene3D):void{ if (_arg1 == null){ return; }; if (scene != null){ scene.removeEventListener(SandyEvent.SCENE_RENDER_FINISH, _finishMaterial); scene.removeEventListener(SandyEvent.SCENE_RENDER_DISPLAYLIST, _beginMaterial); }; m_oScene = _arg1; scene.addEventListener(SandyEvent.SCENE_RENDER_FINISH, _finishMaterial); scene.addEventListener(SandyEvent.SCENE_RENDER_DISPLAYLIST, _beginMaterial); } public function get container():Sprite{ return (m_oContainer); } public function swapCulling():void{ normal.negate(); } public function get3DFrom2D(_arg1:Point):Point3D{ var _local2:Matrix; var _local3:Number; var _local4:Number; var _local5:Point3D; _local2 = new Matrix((vertices[1].sx - vertices[0].sx), (vertices[2].sx - vertices[0].sx), (vertices[1].sy - vertices[0].sy), (vertices[2].sy - vertices[0].sy), 0, 0); _local2.invert(); _local3 = ((_local2.a * (_arg1.x - vertices[0].sx)) + (_local2.b * (_arg1.y - vertices[0].sy))); _local4 = ((_local2.c * (_arg1.x - vertices[0].sx)) + (_local2.d * (_arg1.y - vertices[0].sy))); _local5 = new Point3D(((vertices[0].x + (_local3 * (vertices[1].x - vertices[0].x))) + (_local4 * (vertices[2].x - vertices[0].x))), ((vertices[0].y + (_local3 * (vertices[1].y - vertices[0].y))) + (_local4 * (vertices[2].y - vertices[0].y))), ((vertices[0].z + (_local3 * (vertices[1].z - vertices[0].z))) + (_local4 * (vertices[2].z - vertices[0].z)))); this.shape.matrix.Point3DMult(_local5); return (_local5); } private function __update(_arg1:Array, _arg2:Array, _arg3:uint, _arg4:uint):void{ var _local5:int; var _local6:*; var _local7:uint; var _local8:Number; var _local9:Number; var _local10:Number; var _local11:Number; var _local12:*; var _local13:UVCoord; var _local14:Point3D; var _local15:Edge3D; _local5 = 0; vertexNormals = new Array(); vertices = new Array(); for each (_local6 in _arg1) { vertices[_local5] = Vertex(m_oGeometry.aVertex[_arg1[_local5]]); vertexNormals[_local5] = m_oGeometry.aVertexNormals[_arg1[_local5]]; _local5++; }; a = vertices[0]; b = vertices[1]; c = vertices[2]; d = vertices[3]; if (_arg2){ _local8 = Number.POSITIVE_INFINITY; _local9 = Number.POSITIVE_INFINITY; _local10 = Number.NEGATIVE_INFINITY; _local11 = Number.NEGATIVE_INFINITY; aUVCoord = new Array(); _local5 = 0; if (_arg2){ for each (_local12 in _arg2) { _local13 = (m_oGeometry.aUVCoords[_arg2[_local5]] as UVCoord); if (_local13 == null){ _local13 = new UVCoord(0, 0); }; aUVCoord[_local5] = _local13; if (_local13.u < _local8){ _local8 = _local13.u; } else { if (_local13.u > _local10){ _local10 = _local13.u; }; }; if (_local13.v < _local9){ _local9 = _local13.v; } else { if (_local13.v > _local11){ _local11 = _local13.v; }; }; _local5++; }; uvBounds = new Rectangle(_local8, _local9, (_local10 - _local8), (_local11 - _local9)); } else { aUVCoord = [new UVCoord(), new UVCoord(), new UVCoord()]; uvBounds = new Rectangle(0, 0, 0, 0); }; }; m_nNormalId = _arg3; normal = Vertex(m_oGeometry.aFacesNormals[_arg3]); if (normal == null){ _local14 = createNormal(); m_nNormalId = m_oGeometry.setFaceNormal(m_oGeometry.getNextFaceNormalID(), _local14.x, _local14.y, _local14.z); }; aEdges = new Array(); for each (_local7 in m_oGeometry.aFaceEdges[_arg4]) { _local15 = m_oGeometry.aEdges[_local7]; _local15.vertex1 = m_oGeometry.aVertex[_local15.vertexId1]; _local15.vertex2 = m_oGeometry.aVertex[_local15.vertexId2]; aEdges.push(_local15); }; } public function clipFrontPlane(_arg1:Frustum):Array{ cvertices = vertices.slice(); if (vertices.length < 3){ isClipped = _arg1.clipLineFrontPlane(cvertices); } else { caUVCoord = aUVCoord.slice(); isClipped = _arg1.clipFrontPlane(cvertices, caUVCoord); }; return (cvertices); } public function get broadcaster():BubbleEventBroadcaster{ return (m_oEB); } public function get enableInteractivity():Boolean{ return (mouseInteractivity); } protected function _startMouseInteraction(_arg1:MouseEvent=null):void{ container.addEventListener(MouseEvent.CLICK, _onTextureInteraction); container.addEventListener(MouseEvent.MOUSE_UP, _onTextureInteraction); container.addEventListener(MouseEvent.MOUSE_DOWN, _onTextureInteraction); container.addEventListener(MouseEvent.DOUBLE_CLICK, _onTextureInteraction); container.addEventListener(MouseEvent.MOUSE_MOVE, _onTextureInteraction); container.addEventListener(MouseEvent.MOUSE_OVER, _onTextureInteraction); container.addEventListener(MouseEvent.MOUSE_OUT, _onTextureInteraction); container.addEventListener(MouseEvent.MOUSE_WHEEL, _onTextureInteraction); container.addEventListener(KeyboardEvent.KEY_DOWN, _onTextureInteraction); container.addEventListener(KeyboardEvent.KEY_UP, _onTextureInteraction); m_oContainer.addEventListener(Event.ENTER_FRAME, _onTextureInteraction); } public function get changed():Boolean{ return (shape.changed); } public function get depth():Number{ return (m_nDepth); } public function precompute():void{ isClipped = false; minZ = a.wz; if (b.wz < minZ){ minZ = b.wz; }; m_nDepth = (a.wz + b.wz); if (c != null){ if (c.wz < minZ){ minZ = c.wz; }; m_nDepth = (m_nDepth + c.wz); }; if (d != null){ if (d.wz < minZ){ minZ = d.wz; }; m_nDepth = (m_nDepth + d.wz); }; m_nDepth = (m_nDepth / vertices.length); } public function addEventListener(_arg1:String, _arg2):void{ m_oEB.addEventListener.apply(m_oEB, arguments); } public function set normal(_arg1:Vertex):void{ if (_arg1 != null){ m_oGeometry.aFacesNormals[m_nNormalId].copy(_arg1); }; } public function removeEventListener(_arg1:String, _arg2):void{ m_oEB.removeEventListener(_arg1, _arg2); } public function clear():void{ if (m_oContainer != null){ m_oContainer.graphics.clear(); }; } protected function _onInteraction(_arg1:Event):void{ var _local2:Point; var _local3:UVCoord; var _local4:Point3D; _local2 = new Point(m_oContainer.mouseX, m_oContainer.mouseY); _local3 = getUVFrom2D(_local2); _local4 = get3DFrom2D(_local2); m_oEB.dispatchEvent(new Shape3DEvent(_arg1.type, shape, this, _local3, _local4, _arg1)); } public function clip(_arg1:Frustum):Array{ var _local2:CullingState; cvertices = null; caUVCoord = null; _local2 = _arg1.polygonInFrustum(this); if (_local2 == CullingState.INSIDE){ return (vertices); }; if (_local2 == CullingState.OUTSIDE){ return (null); }; if (vertices.length < 3){ clipFrontPlane(_arg1); } else { cvertices = vertices.slice(); caUVCoord = aUVCoord.slice(); isClipped = _arg1.clipFrustum(cvertices, caUVCoord); }; return (cvertices); } public function createTransformedNormal():Point3D{ var _local1:Point3D; var _local2:Point3D; var _local3:Vertex; var _local4:Vertex; var _local5:Vertex; var _local6:Point3D; if (vertices.length > 2){ _local3 = vertices[0]; _local4 = vertices[1]; _local5 = vertices[2]; _local1 = new Point3D((_local4.wx - _local3.wx), (_local4.wy - _local3.wy), (_local4.wz - _local3.wz)); _local2 = new Point3D((_local4.wx - _local5.wx), (_local4.wy - _local5.wy), (_local4.wz - _local5.wz)); _local6 = Point3DMath.cross(_local1, _local2); Point3DMath.normalize(_local6); return (_local6); }; return (new Point3D()); } public function getUVFrom2D(_arg1:Point):UVCoord{ var _local2:Point; var _local3:Point; var _local4:Point; var _local5:UVCoord; var _local6:UVCoord; var _local7:UVCoord; var _local8:Point; var _local9:Point; var _local10:Point; var _local11:Point; var _local12:Point; var _local13:Point; var _local14:Point; var _local15:Point; var _local16:Number; var _local17:Number; _local2 = new Point(vertices[0].sx, vertices[0].sy); _local3 = new Point(vertices[1].sx, vertices[1].sy); _local4 = new Point(vertices[2].sx, vertices[2].sy); _local5 = aUVCoord[0]; _local6 = aUVCoord[1]; _local7 = aUVCoord[2]; _local8 = new Point((_local3.x - _local2.x), (_local3.y - _local2.y)); _local9 = _local8.clone(); _local9.normalize(1); _local10 = new Point((_local4.x - _local2.x), (_local4.y - _local2.y)); _local11 = _local10.clone(); _local11.normalize(1); _local12 = new Point((_arg1.x - _local8.x), (_arg1.y - _local8.y)); _local13 = IntersectionMath.intersectionLine2D(_local2, _local4, _arg1, _local12); _local14 = new Point((_local13.x - _local2.x), (_local13.y - _local2.y)); _local15 = new Point((_arg1.x - _local13.x), (_arg1.y - _local13.y)); _local16 = (_local15.length / _local8.length); _local17 = (_local14.length / _local10.length); return (new UVCoord(((_local5.u + (_local16 * (_local6.u - _local5.u))) + (_local17 * (_local7.u - _local5.u))), ((_local5.v + (_local16 * (_local6.v - _local5.v))) + (_local17 * (_local7.v - _local5.v))))); } protected function _stopMouseInteraction(_arg1:MouseEvent=null):void{ container.removeEventListener(MouseEvent.CLICK, _onTextureInteraction); container.removeEventListener(MouseEvent.MOUSE_UP, _onTextureInteraction); container.removeEventListener(MouseEvent.MOUSE_DOWN, _onTextureInteraction); container.removeEventListener(MouseEvent.DOUBLE_CLICK, _onTextureInteraction); container.removeEventListener(MouseEvent.MOUSE_MOVE, _onTextureInteraction); container.removeEventListener(MouseEvent.MOUSE_OVER, _onTextureInteraction); container.removeEventListener(MouseEvent.MOUSE_OUT, _onTextureInteraction); container.removeEventListener(MouseEvent.MOUSE_WHEEL, _onTextureInteraction); m_oContainer.removeEventListener(Event.ENTER_FRAME, _onTextureInteraction); container.removeEventListener(KeyboardEvent.KEY_DOWN, _onTextureInteraction); container.removeEventListener(KeyboardEvent.KEY_UP, _onTextureInteraction); } public function set enableInteractivity(_arg1:Boolean):void{ if (_arg1 != mouseInteractivity){ if (_arg1){ container.addEventListener(MouseEvent.ROLL_OVER, _startMouseInteraction, false); container.addEventListener(MouseEvent.ROLL_OUT, _stopMouseInteraction, false); } else { _stopMouseInteraction(); }; mouseInteractivity = _arg1; }; } public function set appearance(_arg1:Appearance):void{ if (_arg1 != null){ m_oAppearance = _arg1; m_oAppearance.frontMaterial.init(this); if (m_oAppearance.backMaterial != m_oAppearance.frontMaterial){ m_oAppearance.backMaterial.init(this); }; }; } public function get normal():Vertex{ return (m_oGeometry.aFacesNormals[m_nNormalId]); } public function set enableEvents(_arg1:Boolean):void{ if (((_arg1) && (!(mouseEvents)))){ container.addEventListener(MouseEvent.CLICK, _onInteraction); container.addEventListener(MouseEvent.MOUSE_UP, _onInteraction); container.addEventListener(MouseEvent.MOUSE_DOWN, _onInteraction); container.addEventListener(MouseEvent.ROLL_OVER, _onInteraction); container.addEventListener(MouseEvent.ROLL_OUT, _onInteraction); container.addEventListener(MouseEvent.DOUBLE_CLICK, _onInteraction); container.addEventListener(MouseEvent.MOUSE_MOVE, _onInteraction); container.addEventListener(MouseEvent.MOUSE_OVER, _onInteraction); container.addEventListener(MouseEvent.MOUSE_OUT, _onInteraction); container.addEventListener(MouseEvent.MOUSE_WHEEL, _onInteraction); } else { if (((!(_arg1)) && (mouseEvents))){ container.removeEventListener(MouseEvent.CLICK, _onInteraction); container.removeEventListener(MouseEvent.MOUSE_UP, _onInteraction); container.removeEventListener(MouseEvent.MOUSE_DOWN, _onInteraction); container.removeEventListener(MouseEvent.ROLL_OVER, _onInteraction); container.removeEventListener(MouseEvent.ROLL_OUT, _onInteraction); container.removeEventListener(MouseEvent.DOUBLE_CLICK, _onInteraction); container.removeEventListener(MouseEvent.MOUSE_MOVE, _onInteraction); container.removeEventListener(MouseEvent.MOUSE_OVER, _onInteraction); container.removeEventListener(MouseEvent.MOUSE_OUT, _onInteraction); container.removeEventListener(MouseEvent.MOUSE_WHEEL, _onInteraction); }; }; mouseEvents = _arg1; } public function destroy():void{ clear(); scene.removeEventListener(SandyEvent.SCENE_RENDER_FINISH, _finishMaterial); scene.removeEventListener(SandyEvent.SCENE_RENDER_DISPLAYLIST, _beginMaterial); enableEvents = false; enableInteractivity = false; if (appearance.backMaterial){ appearance.backMaterial.unlink(this); }; if (appearance.frontMaterial){ appearance.frontMaterial.unlink(this); }; appearance = null; if (m_oContainer.parent){ m_oContainer.parent.removeChild(m_oContainer); }; if (m_oContainer){ m_oContainer = null; }; cvertices = null; vertices = null; m_oEB = null; m_oGeometry = null; shape = null; scene = null; delete POLYGON_MAP[id]; } public function display(_arg1:Sprite=null):void{ var _local2:Sprite; _local2 = (_arg1) ? _arg1 : m_oContainer; if (visible){ m_oAppearance.frontMaterial.renderPolygon(scene, this, _local2); } else { m_oAppearance.backMaterial.renderPolygon(scene, this, _local2); }; } public function get enableEvents():Boolean{ return (mouseEvents); } } }//package sandy.core.data
Section 19
//Pool (sandy.core.data.Pool) package sandy.core.data { public class Pool { private const m_aVertices:Array; private const m_aUV:Array; private const m_aPoint3Ds:Array; private var m_nIdVertice:int;// = 0 private var m_nIdPoint3D:int;// = 0 private var m_nIdUV:int;// = 0 private var m_nSize:int;// = 300 private static var INSTANCE:Pool; public function Pool(){ var _local1:int; m_nSize = 300; m_aVertices = new Array(); m_nIdVertice = 0; m_aUV = new Array(); m_nIdUV = 0; m_aPoint3Ds = new Array(); m_nIdPoint3D = 0; super(); _local1 = 0; while (_local1 < m_nSize) { m_aVertices[int(_local1)] = new Vertex(); m_aUV[int(_local1)] = new UVCoord(); m_aPoint3Ds[int(_local1)] = new Point3D(); _local1++; }; } public function get nextPoint3D():Point3D{ if (m_nIdPoint3D >= m_aPoint3Ds.length){ m_aPoint3Ds[m_aPoint3Ds.length] = new Point3D(); }; return (m_aPoint3Ds[int(m_nIdPoint3D++)]); } public function init():void{ m_nIdVertice = (m_nIdUV = (m_nIdPoint3D = 0)); } public function get nextUV():UVCoord{ if (m_nIdUV >= m_aUV.length){ m_aUV[m_aUV.length] = new UVCoord(); }; return (m_aUV[int(m_nIdUV++)]); } public function get nextVertex():Vertex{ var _local1:Vertex; if (m_nIdVertice >= m_aVertices.length){ m_aVertices[m_aVertices.length] = new Vertex(); }; _local1 = m_aVertices[int(m_nIdVertice++)]; _local1.projected = false; _local1.transformed = false; return (_local1); } public static function getInstance():Pool{ if (INSTANCE == null){ INSTANCE = new (Pool); }; return (INSTANCE); } } }//package sandy.core.data
Section 20
//PrimitiveFace (sandy.core.data.PrimitiveFace) package sandy.core.data { import sandy.materials.*; import sandy.core.scenegraph.*; public final class PrimitiveFace { private var m_oAppearance:Appearance; private var m_iPrimitive:Shape3D; public var aPolygons:Array; public function PrimitiveFace(_arg1:Shape3D){ aPolygons = new Array(); super(); m_iPrimitive = _arg1; } public function get appearance():Appearance{ return (m_oAppearance); } public function get primitive():Shape3D{ return (m_iPrimitive); } public function set appearance(_arg1:Appearance):void{ var _local2:Polygon; m_oAppearance = _arg1; if (m_iPrimitive.geometry){ for each (_local2 in aPolygons) { _local2.appearance = m_oAppearance; }; }; } public function addPolygon(_arg1:uint):void{ aPolygons.push(m_iPrimitive.aPolygons[_arg1]); } } }//package sandy.core.data
Section 21
//UVCoord (sandy.core.data.UVCoord) package sandy.core.data { public final class UVCoord { public var u:Number; public var v:Number; public function UVCoord(_arg1:Number=0, _arg2:Number=0){ u = _arg1; v = _arg2; } public function sub(_arg1:UVCoord):void{ u = (u - _arg1.u); v = (v - _arg1.v); } public function length():Number{ return (Math.sqrt(((u * u) + (v * v)))); } public function add(_arg1:UVCoord):void{ u = (u + _arg1.u); v = (v + _arg1.v); } public function normalize():void{ var _local1:Number; _local1 = length(); u = (u / _local1); v = (v / _local1); } public function scale(_arg1:Number):void{ u = (u * _arg1); v = (v * _arg1); } public function toString():String{ return (((((("sandy.core.data.UVCoord" + "(u:") + u) + ", v:") + v) + ")")); } public function copy(_arg1:UVCoord):void{ u = _arg1.u; v = _arg1.v; } public function clone():UVCoord{ return (new UVCoord(u, v)); } } }//package sandy.core.data
Section 22
//Vertex (sandy.core.data.Vertex) package sandy.core.data { import sandy.util.*; public final class Vertex { private const m_oWorld:Point3D; public const id:uint; private const m_oLocal:Point3D; public var transformed:Boolean;// = false public var flags:int;// = 0 public var aFaces:Array; public var wx:Number; public var wy:Number; public var wz:Number; public var sx:Number; public var sy:Number; public var nbFaces:uint;// = 0 public var projected:Boolean;// = false public var y:Number; public var z:Number; public var x:Number; private static var ID:uint = 0; public function Vertex(_arg1:Number=0, _arg2:Number=0, _arg3:Number=0, ... _args){ flags = 0; projected = false; transformed = false; id = ID++; nbFaces = 0; aFaces = new Array(); m_oWorld = new Point3D(); m_oLocal = new Point3D(); super(); x = _arg1; y = _arg2; z = _arg3; wx = (_args[0]) ? _args[0] : x; wy = (_args[1]) ? _args[1] : y; wz = (_args[2]) ? _args[2] : z; sy = (sx = 0); } final public function negate():void{ x = -(x); y = -(y); z = -(z); wx = -(wx); wy = -(wy); wz = -(wz); } final public function getWorldPoint3D():Point3D{ m_oWorld.x = wx; m_oWorld.y = wy; m_oWorld.z = wz; return (m_oWorld); } final public function deserialize(_arg1:String):void{ var _local2:Array; _local2 = _arg1.split(","); if (_local2.length != 9){ trace(("Unexpected length of string to deserialize into a Point3D " + _arg1)); }; x = _local2[0]; y = _local2[1]; z = _local2[2]; wx = _local2[3]; wy = _local2[4]; wz = _local2[5]; sx = _local2[6]; sy = _local2[7]; } final public function normalize():void{ var _local1:Number; _local1 = getNorm(); if ((((_local1 == 0)) || ((_local1 == 1)))){ return; }; x = (x / _local1); y = (y / _local1); z = (z / _local1); wx = (wx / _local1); wy = (wy / _local1); wz = (wz / _local1); } final public function getAngle(_arg1:Vertex):Number{ var _local2:Number; var _local3:Number; _local2 = (dot(_arg1) / (getNorm() * _arg1.getNorm())); _local3 = (1 - (_local2 * _local2)); if (_local3 < 0){ trace((" wrong " + _local2)); _local3 = 0; }; return (Math.atan2(Math.sqrt(_local3), _local2)); } final public function add(_arg1:Vertex):void{ x = (x + _arg1.x); y = (y + _arg1.y); z = (z + _arg1.z); wx = (wx + _arg1.wx); wy = (wy + _arg1.wy); wz = (wz + _arg1.wz); } final public function getNorm():Number{ return (Math.sqrt((((x * x) + (y * y)) + (z * z)))); } final public function equals(_arg1:Vertex):Boolean{ return (Boolean((((((((((((((((_arg1.x == x)) && ((_arg1.y == y)))) && ((_arg1.z == z)))) && ((_arg1.wx == wx)))) && ((_arg1.wy == wy)))) && ((_arg1.wz == wz)))) && ((_arg1.sx == wx)))) && ((_arg1.sy == sy))))); } public function sub(_arg1:Vertex):void{ x = (x - _arg1.x); y = (y - _arg1.y); z = (z - _arg1.z); wx = (wx - _arg1.wx); wy = (wy - _arg1.wy); wz = (wz - _arg1.wz); } final public function cross(_arg1:Vertex):Vertex{ return (new Vertex(((y * _arg1.z) - (z * _arg1.y)), ((z * _arg1.x) - (x * _arg1.z)), ((x * _arg1.y) - (y * _arg1.x)))); } final public function dot(_arg1:Vertex):Number{ return ((((x * _arg1.x) + (y * _arg1.y)) + (z * _arg1.z))); } final public function getPoint3D():Point3D{ m_oLocal.x = x; m_oLocal.y = y; m_oLocal.z = z; return (m_oLocal); } public function getScreenPoint():Point3D{ return (new Point3D(sx, sy, wz)); } public function reset(_arg1:Number, _arg2:Number, _arg3:Number):void{ x = _arg1; y = _arg2; z = _arg3; wx = x; wy = y; wz = z; } final public function scale(_arg1:Number):void{ x = (x * _arg1); y = (y * _arg1); z = (z * _arg1); wx = (wx * _arg1); wy = (wy * _arg1); wz = (wz * _arg1); } final public function pow(_arg1:Number):void{ x = Math.pow(x, _arg1); y = Math.pow(y, _arg1); z = Math.pow(z, _arg1); wx = Math.pow(wx, _arg1); wy = Math.pow(wy, _arg1); wz = Math.pow(wz, _arg1); } final public function clone():Vertex{ var _local1:Vertex; _local1 = new Vertex(x, y, z); _local1.wx = wx; _local1.sx = sx; _local1.wy = wy; _local1.sy = sy; _local1.wz = wz; _local1.nbFaces = nbFaces; _local1.aFaces = aFaces.concat(); return (_local1); } final public function serialize(_arg1:Number=0):String{ if (_arg1 == 0){ _arg1 = 0.01; }; return (((((((((((((((NumberUtil.roundTo(x, _arg1) + ",") + NumberUtil.roundTo(y, _arg1)) + ",") + NumberUtil.roundTo(z, _arg1)) + ",") + NumberUtil.roundTo(wx, _arg1)) + ",") + NumberUtil.roundTo(wy, _arg1)) + ",") + NumberUtil.roundTo(wz, _arg1)) + ",") + NumberUtil.roundTo(sx, _arg1)) + ",") + NumberUtil.roundTo(sy, _arg1))); } final public function toString(_arg1:Number=0):String{ if (_arg1 == 0){ _arg1 = 0.01; }; return ((((((((((((((((("{" + NumberUtil.roundTo(x, _arg1)) + ", ") + NumberUtil.roundTo(y, _arg1)) + ", ") + NumberUtil.roundTo(z, _arg1)) + ", ") + NumberUtil.roundTo(wx, _arg1)) + ", ") + NumberUtil.roundTo(wy, _arg1)) + ", ") + NumberUtil.roundTo(wz, _arg1)) + ", ") + NumberUtil.roundTo(sx, _arg1)) + ", ") + NumberUtil.roundTo(sy, _arg1)) + "}")); } final public function clone2():Vertex{ return (new Vertex(wx, wy, wz)); } final public function copy(_arg1:Vertex):void{ x = _arg1.x; y = _arg1.y; z = _arg1.z; wx = _arg1.wx; wy = _arg1.wy; wz = _arg1.wz; sx = _arg1.sx; sy = _arg1.sy; } public static function createFromPoint3D(_arg1:Point3D):Vertex{ return (new Vertex(_arg1.x, _arg1.y, _arg1.z)); } } }//package sandy.core.data
Section 23
//TextLink (sandy.core.interaction.TextLink) package sandy.core.interaction { import flash.geom.*; import flash.text.*; import flash.utils.*; public class TextLink { private var __sTarget:String; private var __sHRef:String; public var width:Number; private var __tfOwner:TextField; private var __iOpenIndex:int; private var __iCloseIndex:int; private var __rBounds:Rectangle; public var height:Number; public var x:Number; public var y:Number; public static var textLinks:Dictionary; public function TextLink(){ x = 0; y = 0; height = 0; width = 0; } public function get href():String{ return (__sHRef); } public function get closeIndex():int{ return (__iCloseIndex); } public function get target():String{ return (__sTarget); } public function set href(_arg1:String):void{ __sHRef = _arg1; } public function set openIndex(_arg1:int):void{ __iOpenIndex = _arg1; } public function set target(_arg1:String):void{ __sTarget = _arg1; } public function set owner(_arg1:TextField):void{ __tfOwner = _arg1; } public function get openIndex():int{ return (__iOpenIndex); } public function getBounds():Rectangle{ return (__rBounds); } protected function _init():void{ var _local1:Number; var _local2:Rectangle; _local1 = 0; while (_local1 < (__iCloseIndex - __iOpenIndex)) { _local2 = __tfOwner.getCharBoundaries((openIndex + _local1)); if (_local1 == 0){ x = _local2.x; y = _local2.y; }; width = (width + _local2.width); height = ((height < _local2.height)) ? _local2.height : height; _local1++; }; __rBounds = new Rectangle(); __rBounds.x = x; __rBounds.y = y; __rBounds.height = height; __rBounds.width = width; } public function set closeIndex(_arg1:int):void{ __iCloseIndex = _arg1; } public function get owner():TextField{ return (__tfOwner); } public static function getTextLinks(_arg1:TextField, _arg2:Boolean=false):Array{ var _local3:String; var _local4:RegExp; var _local5:RegExp; var _local6:RegExp; var _local7:RegExp; var _local8:RegExp; var _local9:RegExp; var _local10:Object; var _local11:TextLink; var _local12:String; var _local13:String; if (!_arg1.htmlText){ return (null); }; if (!textLinks){ textLinks = new Dictionary(); }; if (((textLinks[_arg1]) && (!(_arg2)))){ return (textLinks[_arg1]); }; textLinks[_arg1] = new Array(); _local3 = _arg1.htmlText; _local4 = /href=['"].*?['"]/i; _local5 = /target=['"].*?['"]/i; _local6 = /<A.*?A>/i; _local7 = /<A.*?\>/i; _local8 = /<\/A>/i; _local9 = /<[^A][^\/A].*?>/gi; _local3 = _local3.replace(_local9, ""); _local10 = _local6.exec(_local3); while (_local10 != null) { _local11 = new (TextLink); _local11.owner = _arg1; textLinks[_arg1].push(_local11); _local12 = _local10[0].match(_local4); _local11.href = _local12.substring(6, (_local12.length - 1)); _local13 = _local10[0].match(_local5); _local11.target = _local13.substring(8, (_local13.length - 1)); _local11.openIndex = _local3.search(_local7); _local3 = _local3.replace(_local7, ""); _local11.closeIndex = _local3.search(_local8); _local3 = _local3.replace(_local8, ""); _local11._init(); _local10 = _local6.exec(_local3); }; return (textLinks[_arg1]); } } }//package sandy.core.interaction
Section 24
//VirtualMouse (sandy.core.interaction.VirtualMouse) package sandy.core.interaction { import sandy.materials.*; import sandy.core.data.*; import flash.display.*; import flash.events.*; import flash.geom.*; import flash.text.*; public class VirtualMouse extends EventDispatcher { private var lastDownTarget:InteractiveObject; private var m_ioOldTarget:Sprite; private var lastWithinStage:Boolean;// = true private var _lastEvent:Event; private var m_ioTarget:Sprite; private var lastLocation:Point; private var location:Point; private static var _oI:VirtualMouse; public function VirtualMouse(_arg1:PrivateConstructorAccess){ lastWithinStage = true; super(); location = new Point(0, 0); lastLocation = location.clone(); } public function interactWithTexture(_arg1:Polygon, _arg2:UVCoord, _arg3:MouseEvent):void{ var _local4:MovieMaterial; var _local5:Array; var _local6:Sprite; var _local7:DisplayObject; var _local8:int; var _local9:Point; var _local10:Point; var _local11:Boolean; _local4 = ((_arg1.visible) ? _arg1.appearance.frontMaterial : _arg1.appearance.backMaterial as MovieMaterial); if (_local4 == null){ return; }; m_ioTarget = _local4.movie; location = new Point((_arg2.u * _local4.texture.width), (_arg2.v * _local4.texture.height)); _local5 = m_ioTarget.getObjectsUnderPoint(m_ioTarget.localToGlobal(location)); _local8 = _local5.length; while (--_local8 > -1) { _local7 = _local5[_local8]; while (_local7) { if (((_local6) && ((_local7 is SimpleButton)))){ _local6 = null; } else { if (((((_local6) && ((_local7 is DisplayObjectContainer)))) && (!(DisplayObjectContainer(_local7).mouseChildren)))){ _local6 = null; }; }; if (((((!(_local6)) && ((_local7 is DisplayObjectContainer)))) && (DisplayObjectContainer(_local7).mouseEnabled))){ _local6 = (_local7 as Sprite); }; _local7 = _local7.parent; }; }; if (!_local6){ _local6 = m_ioTarget; }; if (!m_ioOldTarget){ _local6.stage; }; _local9 = _arg1.container.globalToLocal(location); _local10 = _local6.globalToLocal(location); if (((!((lastLocation.x == location.x))) || (!((lastLocation.y == location.y))))){ _local11 = Boolean((((((((location.x >= 0)) && ((location.y >= 0)))) && ((location.x <= _arg1.container.stage.stageWidth)))) && ((location.y <= _arg1.container.stage.stageHeight)))); if (((!(_local11)) && (lastWithinStage))){ _lastEvent = new MouseEvent(Event.MOUSE_LEAVE, false, false); _arg1.container.stage.dispatchEvent(_lastEvent); dispatchEvent(_lastEvent); }; if (_local11){ _lastEvent = new MouseEvent(Event.MOUSE_LEAVE, false, false); _local6.dispatchEvent(_lastEvent); dispatchEvent(_lastEvent); }; lastWithinStage = _local11; }; if (_local6 != m_ioOldTarget){ _lastEvent = new MouseEvent(MouseEvent.MOUSE_OUT, true, false, _local9.x, _local9.y, _local6, _arg3.ctrlKey, _arg3.altKey, _arg3.shiftKey, _arg3.buttonDown, _arg3.delta); m_ioTarget.dispatchEvent(_lastEvent); dispatchEvent(_lastEvent); _lastEvent = new MouseEvent(MouseEvent.ROLL_OUT, false, false, _local9.x, _local9.y, _local6, _arg3.ctrlKey, _arg3.altKey, _arg3.shiftKey, _arg3.buttonDown, _arg3.delta); m_ioTarget.dispatchEvent(_lastEvent); dispatchEvent(_lastEvent); _lastEvent = new MouseEvent(MouseEvent.MOUSE_OVER, true, false, _local10.x, _local10.y, m_ioOldTarget, _arg3.ctrlKey, _arg3.altKey, _arg3.shiftKey, _arg3.buttonDown, _arg3.delta); _local6.dispatchEvent(_lastEvent); dispatchEvent(_lastEvent); _lastEvent = new MouseEvent(MouseEvent.ROLL_OVER, false, false, _local10.x, _local10.y, m_ioOldTarget, _arg3.ctrlKey, _arg3.altKey, _arg3.shiftKey, _arg3.buttonDown, _arg3.delta); _local6.dispatchEvent(_lastEvent); dispatchEvent(_lastEvent); }; if (_arg3.type == MouseEvent.MOUSE_DOWN){ _lastEvent = new MouseEvent(MouseEvent.MOUSE_DOWN, true, false, _local10.x, _local10.y, _local6, _arg3.ctrlKey, _arg3.altKey, _arg3.shiftKey, _arg3.buttonDown, _arg3.delta); _local6.dispatchEvent(_lastEvent); dispatchEvent(_lastEvent); lastDownTarget = _local6; } else { if (_arg3.type == MouseEvent.MOUSE_UP){ _lastEvent = new MouseEvent(MouseEvent.MOUSE_UP, true, false, _local10.x, _local10.y, _local6, _arg3.ctrlKey, _arg3.altKey, _arg3.shiftKey, _arg3.buttonDown, _arg3.delta); _local6.dispatchEvent(_lastEvent); dispatchEvent(_lastEvent); } else { if (_arg3.type == MouseEvent.CLICK){ _lastEvent = new MouseEvent(MouseEvent.CLICK, true, false, _local10.x, _local10.y, _local6, _arg3.ctrlKey, _arg3.altKey, _arg3.shiftKey, _arg3.buttonDown, _arg3.delta); _local6.dispatchEvent(_lastEvent); dispatchEvent(_lastEvent); lastDownTarget = null; } else { if ((((_arg3.type == MouseEvent.DOUBLE_CLICK)) && (_local6.doubleClickEnabled))){ _lastEvent = new MouseEvent(MouseEvent.DOUBLE_CLICK, true, false, _local10.x, _local10.y, _local6, _arg3.ctrlKey, _arg3.altKey, _arg3.shiftKey, _arg3.buttonDown, _arg3.delta); _local6.dispatchEvent(_lastEvent); dispatchEvent(_lastEvent); }; }; }; }; lastLocation = location.clone(); m_ioOldTarget = _local6; } private function _checkLinks(_arg1:TextField):void{ var _local2:Point; var _local3:Array; var _local4:Number; var _local5:Number; _local2 = _arg1.globalToLocal(location); _local3 = TextLink.getTextLinks(_arg1); _local4 = _local3.length; _local5 = 0; while (_local5 < _local4) { if (((_local3[_local5] as TextLink).getBounds() as Rectangle).containsPoint(_local2)){ }; _local5++; }; } public static function getInstance():VirtualMouse{ if (!_oI){ _oI = new VirtualMouse(new PrivateConstructorAccess()); }; return (_oI); } } }//package sandy.core.interaction class PrivateConstructorAccess { private function PrivateConstructorAccess(){ } }
Section 25
//Light3D (sandy.core.light.Light3D) package sandy.core.light { import sandy.core.data.*; import flash.events.*; import sandy.events.*; import sandy.util.*; public class Light3D extends EventDispatcher { private var _dir:Point3D; private var _color:uint; private var _nPower:Number; private var _power:Number; public static const MAX_POWER:Number = 150; public function Light3D(_arg1:Point3D, _arg2:Number){ _dir = _arg1; _dir.normalize(); setPower(_arg2); } public function setPower(_arg1:Number):void{ _power = NumberUtil.constrain(_arg1, 0, Light3D.MAX_POWER); _nPower = (_power / Light3D.MAX_POWER); dispatchEvent(new SandyEvent(SandyEvent.LIGHT_UPDATED)); } public function setDirectionPoint3D(_arg1:Point3D):void{ _dir = _arg1; _dir.normalize(); dispatchEvent(new SandyEvent(SandyEvent.LIGHT_UPDATED)); } public function getPower():Number{ return (_power); } public function getNormalizedPower():Number{ return (_nPower); } public function set color(_arg1:uint):void{ _color = _arg1; dispatchEvent(new SandyEvent(SandyEvent.LIGHT_COLOR_CHANGED)); } public function get color():uint{ return (_color); } public function calculate(_arg1:Point3D):Number{ var _local2:Number; _local2 = _dir.dot(_arg1); _local2 = -(_local2); if (_local2 < 0){ _local2 = 0; }; return ((_nPower * _local2)); } public function getDirectionPoint3D():Point3D{ return (_dir); } public function destroy():void{ } public function setDirection(_arg1:Number, _arg2:Number, _arg3:Number):void{ _dir.x = _arg1; _dir.y = _arg2; _dir.z = _arg3; _dir.normalize(); dispatchEvent(new SandyEvent(SandyEvent.LIGHT_UPDATED)); } } }//package sandy.core.light
Section 26
//ATransformable (sandy.core.scenegraph.ATransformable) package sandy.core.scenegraph { import sandy.core.data.*; public class ATransformable extends Node { private var _nYaw:Number; private var _vLookAt:Point3D; private var _nRoll:Number; private var _vLookatDown:Point3D; private var m_oMatrix:Matrix4; protected var _oScale:Point3D; private var _nTilt:Number; protected var m_oPreviousOffsetRotation:Point3D; private var _vRotation:Point3D; public var invModelMatrix:Matrix4; protected var m_tmpMt:Matrix4; protected var _vOut:Point3D; public var disable:Boolean;// = false protected var _vSide:Point3D; protected var _p:Point3D; protected var _vUp:Point3D; public function ATransformable(_arg1:String=""){ disable = false; invModelMatrix = new Matrix4(); m_oPreviousOffsetRotation = new Point3D(); super(_arg1); resetCoords(); } public function set roll(_arg1:Number):void{ var _local2:Number; _local2 = (_arg1 - _nRoll); if (_local2 == 0){ return; }; changed = true; m_tmpMt.axisRotation(_vOut.x, _vOut.y, _vOut.z, _local2); m_tmpMt.Point3DMult3x3(_vSide); m_tmpMt.Point3DMult3x3(_vUp); _nRoll = _arg1; } public function getLookAt():Point3D{ return (_vLookAt); } public function moveSideways(_arg1:Number):void{ changed = true; _p.x = (_p.x + (_vSide.x * _arg1)); _p.y = (_p.y + (_vSide.y * _arg1)); _p.z = (_p.z + (_vSide.z * _arg1)); } public function moveHorizontally(_arg1:Number):void{ changed = true; _p.x = (_p.x + (_vOut.x * _arg1)); _p.z = (_p.z + (_vOut.z * _arg1)); } public function lookAt(_arg1:Number, _arg2:Number, _arg3:Number):void{ changed = true; _vLookAt = new Point3D(_arg1, _arg2, _arg3); _vOut.x = _arg1; _vOut.y = _arg2; _vOut.z = _arg3; _vOut.sub(_p); _vOut.normalize(); _vSide = null; _vSide = _vOut.cross(_vLookatDown); _vSide.normalize(); _vUp = null; _vUp = _vOut.cross(_vSide); _vUp.normalize(); } public function moveVertically(_arg1:Number):void{ changed = true; _p.y = (_p.y + _arg1); } public function set target(_arg1:Point3D):void{ lookAt(_arg1.x, _arg1.y, _arg1.z); } public function initFrame():void{ _vSide = new Point3D(1, 0, 0); _vUp = new Point3D(0, 1, 0); _vOut = new Point3D(0, 0, 1); _vRotation = new Point3D(0, 0, 0); } public function set pan(_arg1:Number):void{ var _local2:Number; _local2 = (_arg1 - _nYaw); if (_local2 == 0){ return; }; changed = true; m_tmpMt.axisRotation(_vUp.x, _vUp.y, _vUp.z, _local2); m_tmpMt.Point3DMult3x3(_vOut); m_tmpMt.Point3DMult3x3(_vSide); _nYaw = _arg1; } public function get out():Point3D{ return (_vOut); } public function get scaleY():Number{ return (_oScale.y); } public function get scaleX():Number{ return (_oScale.x); } public function get scaleZ():Number{ return (_oScale.z); } public function resetCoords():void{ initFrame(); _p = new Point3D(); _oScale = new Point3D(1, 1, 1); _vRotation = new Point3D(0, 0, 0); _vLookatDown = new Point3D(1E-11, -1, 0); _nRoll = 0; _nTilt = 0; _nYaw = 0; m_tmpMt = new Matrix4(); m_oMatrix = new Matrix4(); } public function translate(_arg1:Number, _arg2:Number, _arg3:Number):void{ changed = true; _p.x = (_p.x + _arg1); _p.y = (_p.y + _arg2); _p.z = (_p.z + _arg3); } public function get rotateY():Number{ return (_vRotation.y); } public function get rotateZ():Number{ return (_vRotation.z); } public function get rotateX():Number{ return (_vRotation.x); } public function get side():Point3D{ return (_vSide); } override public function toString():String{ return ("sandy.core.scenegraph.ATransformable"); } public function get x():Number{ return (_p.x); } public function get y():Number{ return (_p.y); } public function get z():Number{ return (_p.z); } public function get roll():Number{ return (_nRoll); } public function set matrix(_arg1:Matrix4):void{ m_oMatrix = _arg1; m_oMatrix.Point3DMult3x3(_vSide); m_oMatrix.Point3DMult3x3(_vUp); m_oMatrix.Point3DMult3x3(_vOut); _vSide.normalize(); _vUp.normalize(); _vOut.normalize(); _p.x = _arg1.n14; _p.y = _arg1.n24; _p.z = _arg1.n34; } public function set tilt(_arg1:Number):void{ var _local2:Number; _local2 = (_arg1 - _nTilt); if (_local2 == 0){ return; }; changed = true; m_tmpMt.axisRotation(_vSide.x, _vSide.y, _vSide.z, _local2); m_tmpMt.Point3DMult3x3(_vOut); m_tmpMt.Point3DMult3x3(_vUp); _nTilt = _arg1; } public function get up():Point3D{ return (_vUp); } public function set scaleX(_arg1:Number):void{ if (_oScale.x == _arg1){ return; }; _oScale.x = _arg1; changed = true; } public function get pan():Number{ return (_nYaw); } public function set scaleY(_arg1:Number):void{ if (_oScale.y == _arg1){ return; }; _oScale.y = _arg1; changed = true; } public function getPosition(_arg1:String="local"):Point3D{ var _local2:Point3D; switch (_arg1){ case "local": _local2 = new Point3D(_p.x, _p.y, _p.z); break; case "camera": _local2 = new Point3D(viewMatrix.n14, viewMatrix.n24, viewMatrix.n34); break; case "absolute": _local2 = new Point3D(modelMatrix.n14, modelMatrix.n24, modelMatrix.n34); break; default: _local2 = new Point3D(_p.x, _p.y, _p.z); break; }; return (_local2); } public function set scaleZ(_arg1:Number):void{ if (_oScale.z == _arg1){ return; }; _oScale.z = _arg1; changed = true; } public function moveLateraly(_arg1:Number):void{ changed = true; _p.x = (_p.x + _arg1); } public function rotateAxis(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):void{ var _local5:Number; changed = true; _arg4 = ((_arg4 + 360) % 360); _local5 = Math.sqrt((((_arg1 * _arg1) + (_arg2 * _arg2)) + (_arg3 * _arg3))); m_tmpMt.axisRotation((_arg1 / _local5), (_arg2 / _local5), (_arg3 / _local5), _arg4); m_tmpMt.Point3DMult3x3(_vSide); m_tmpMt.Point3DMult3x3(_vUp); m_tmpMt.Point3DMult3x3(_vOut); } public function moveUpwards(_arg1:Number):void{ changed = true; _p.x = (_p.x + (_vUp.x * _arg1)); _p.y = (_p.y + (_vUp.y * _arg1)); _p.z = (_p.z + (_vUp.z * _arg1)); } public function setPosition(_arg1:Number, _arg2:Number, _arg3:Number):void{ changed = true; _p.x = _arg1; _p.y = _arg2; _p.z = _arg3; } public function set rotateX(_arg1:Number):void{ var _local2:Number; _local2 = (_arg1 - _vRotation.x); if (_local2 == 0){ return; }; changed = true; m_tmpMt.rotationX(_local2); m_tmpMt.Point3DMult3x3(_vSide); m_tmpMt.Point3DMult3x3(_vUp); m_tmpMt.Point3DMult3x3(_vOut); _vRotation.x = _arg1; } public function moveForward(_arg1:Number):void{ changed = true; _p.x = (_p.x + (_vOut.x * _arg1)); _p.y = (_p.y + (_vOut.y * _arg1)); _p.z = (_p.z + (_vOut.z * _arg1)); } public function set rotateY(_arg1:Number):void{ var _local2:Number; _local2 = (_arg1 - _vRotation.y); if (_local2 == 0){ return; }; changed = true; m_tmpMt.rotationY(_local2); m_tmpMt.Point3DMult3x3(_vSide); m_tmpMt.Point3DMult3x3(_vUp); m_tmpMt.Point3DMult3x3(_vOut); _vRotation.y = _arg1; } public function get tilt():Number{ return (_nTilt); } public function set rotateZ(_arg1:Number):void{ var _local2:Number; _local2 = (_arg1 - _vRotation.z); if (_local2 == 0){ return; }; changed = true; m_tmpMt.rotationZ(_local2); m_tmpMt.Point3DMult3x3(_vSide); m_tmpMt.Point3DMult3x3(_vUp); m_tmpMt.Point3DMult3x3(_vOut); _vRotation.z = _arg1; } public function get matrix():Matrix4{ return (m_oMatrix); } public function updateTransform():void{ if (changed){ m_oMatrix.n11 = (_vSide.x * _oScale.x); m_oMatrix.n12 = (_vUp.x * _oScale.y); m_oMatrix.n13 = (_vOut.x * _oScale.z); m_oMatrix.n14 = _p.x; m_oMatrix.n21 = (_vSide.y * _oScale.x); m_oMatrix.n22 = (_vUp.y * _oScale.y); m_oMatrix.n23 = (_vOut.y * _oScale.z); m_oMatrix.n24 = _p.y; m_oMatrix.n31 = (_vSide.z * _oScale.x); m_oMatrix.n32 = (_vUp.z * _oScale.y); m_oMatrix.n33 = (_vOut.z * _oScale.z); m_oMatrix.n34 = _p.z; _vOut.normalize(); _vSide.normalize(); _vUp.normalize(); }; } override public function update(_arg1:Matrix4, _arg2:Boolean):void{ updateTransform(); if (((_arg2) || (changed))){ if (((_arg1) && (!(disable)))){ modelMatrix.copy(_arg1); modelMatrix.multiply4x3(m_oMatrix); } else { modelMatrix.copy(m_oMatrix); }; invModelMatrix.n11 = modelMatrix.n11; invModelMatrix.n12 = modelMatrix.n21; invModelMatrix.n13 = modelMatrix.n31; invModelMatrix.n21 = modelMatrix.n12; invModelMatrix.n22 = modelMatrix.n22; invModelMatrix.n23 = modelMatrix.n32; invModelMatrix.n31 = modelMatrix.n13; invModelMatrix.n32 = modelMatrix.n23; invModelMatrix.n33 = modelMatrix.n33; invModelMatrix.n14 = -((((modelMatrix.n11 * modelMatrix.n14) + (modelMatrix.n21 * modelMatrix.n24)) + (modelMatrix.n31 * modelMatrix.n34))); invModelMatrix.n24 = -((((modelMatrix.n12 * modelMatrix.n14) + (modelMatrix.n22 * modelMatrix.n24)) + (modelMatrix.n32 * modelMatrix.n34))); invModelMatrix.n34 = -((((modelMatrix.n13 * modelMatrix.n14) + (modelMatrix.n23 * modelMatrix.n24)) + (modelMatrix.n33 * modelMatrix.n34))); }; super.update(modelMatrix, _arg2); } public function set x(_arg1:Number):void{ if (_arg1 == _p.x){ return; }; _p.x = _arg1; changed = true; } public function set y(_arg1:Number):void{ if (_arg1 == _p.y){ return; }; _p.y = _arg1; changed = true; } public function set z(_arg1:Number):void{ if (_arg1 == _p.z){ return; }; _p.z = _arg1; changed = true; } } }//package sandy.core.scenegraph
Section 27
//Camera3D (sandy.core.scenegraph.Camera3D) package sandy.core.scenegraph { import sandy.core.data.*; import sandy.view.*; import flash.geom.*; import sandy.util.*; public class Camera3D extends ATransformable { public var frustrum:Frustum; private var mp11:Number; private var mp12:Number; private var mp13:Number; private var mp14:Number; private var mp22:Number; private var mp24:Number; private var m_nOffy:int; private var mp23:Number; private var _mp:Matrix4; private var mp33:Number; private var m_nOffx:int; private var mp31:Number; private var mp32:Number; private var mp34:Number; private var mp41:Number; private var mp43:Number; private var mp44:Number; private var _nFov:Number; private var _mpInv:Matrix4; private var mp42:Number; private var mp21:Number; private var _perspectiveChanged:Boolean;// = false public var viewport:ViewPort; private var _nFar:Number; private var _nNear:Number; public function Camera3D(_arg1:Number=550, _arg2:Number=400, _arg3:Number=45, _arg4:Number=50, _arg5:Number=10000){ viewport = new ViewPort(640, 480); frustrum = new Frustum(); _perspectiveChanged = false; _mp = new Matrix4(); _mpInv = new Matrix4(); super(null); viewport.width = _arg1; viewport.height = _arg2; _nFov = _arg3; _nFar = _arg5; _nNear = _arg4; setPerspectiveProjection(_nFov, viewport.ratio, _nNear, _nFar); m_nOffx = viewport.width2; m_nOffy = viewport.height2; visible = false; z = -300; lookAt(0, 0, 0); } override public function destroy():void{ viewport = null; frustrum = null; _mp = null; _mpInv = null; super.destroy(); } public function get invProjectionMatrix():Matrix4{ _mpInv.copy(_mp); _mpInv.inverse(); return (_mpInv); } public function get far():Number{ return (_nFar); } public function get near():Number{ return (_nNear); } public function set far(_arg1:Number):void{ _nFar = _arg1; _perspectiveChanged = true; } public function projectVertex(_arg1:Vertex):void{ var _local2:Number; var _local3:Number; var _local4:Number; _local2 = (viewport.offset.x + m_nOffx); _local3 = (viewport.offset.y + m_nOffy); _local4 = (1 / _arg1.wz); _arg1.sx = ((((_local4 * _arg1.wx) * mp11) * m_nOffx) + _local2); _arg1.sy = ((((-(_local4) * _arg1.wy) * mp22) * m_nOffy) + _local3); } public function set focalLength(_arg1:Number):void{ _nFov = (Math.atan2(viewport.height2, _arg1) * 114.591559); _perspectiveChanged = true; } protected function setPerspectiveProjection(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):void{ var _local5:Number; var _local6:Number; frustrum.computePlanes(_arg2, _arg3, _arg4, _arg1); _arg1 = NumberUtil.toRadian(_arg1); _local5 = (1 / Math.tan((_arg1 / 2))); _local6 = (_arg4 / (_arg4 - _arg3)); _mp.zero(); _mp.n11 = (_local5 / _arg2); _mp.n22 = _local5; _mp.n33 = _local6; _mp.n34 = (-(_local6) * _arg3); _mp.n43 = 1; mp11 = _mp.n11; mp21 = _mp.n21; mp31 = _mp.n31; mp41 = _mp.n41; mp12 = _mp.n12; mp22 = _mp.n22; mp32 = _mp.n32; mp42 = _mp.n42; mp13 = _mp.n13; mp23 = _mp.n23; mp33 = _mp.n33; mp43 = _mp.n43; mp14 = _mp.n14; mp24 = _mp.n24; mp34 = _mp.n34; mp44 = _mp.n44; changed = true; } override public function toString():String{ return ("sandy.core.scenegraph.Camera3D"); } override public function cull(_arg1:Frustum, _arg2:Matrix4, _arg3:Boolean):void{ } public function set near(_arg1:Number):void{ _nNear = _arg1; _perspectiveChanged = true; } public function set fov(_arg1:Number):void{ _nFov = _arg1; _perspectiveChanged = true; } protected function updatePerspective():void{ setPerspectiveProjection(_nFov, viewport.ratio, _nNear, _nFar); _perspectiveChanged = false; } public function projectArray(_arg1:Array):void{ var _local2:Number; var _local3:Number; var _local4:Number; var _local5:Number; var _local6:Number; var _local7:Vertex; _local2 = (viewport.offset.x + m_nOffx); _local3 = (viewport.offset.y + m_nOffy); _local5 = (mp11 * m_nOffx); _local6 = (mp22 * m_nOffy); for each (_local7 in _arg1) { if (_local7.projected == false){ _local4 = (1 / _local7.wz); _local7.sx = (((_local4 * _local7.wx) * _local5) + _local2); _local7.sy = (((-(_local4) * _local7.wy) * _local6) + _local3); _local7.projected = true; }; }; } public function get focalLength():Number{ return ((viewport.height2 / Math.tan((_nFov * 0.00872664626)))); } override public function update(_arg1:Matrix4, _arg2:Boolean):void{ if (viewport.hasChanged){ _perspectiveChanged = true; m_nOffx = viewport.width2; m_nOffy = viewport.height2; if (scene.rectClipping){ scene.container.scrollRect = new Rectangle(0, 0, viewport.width, viewport.height); } else { scene.container.scrollRect = null; }; viewport.hasChanged = false; }; if (_perspectiveChanged){ updatePerspective(); }; super.update(_arg1, _arg2); } public function get fov():Number{ return (_nFov); } public function get projectionMatrix():Matrix4{ return (_mp); } } }//package sandy.core.scenegraph
Section 28
//Geometry3D (sandy.core.scenegraph.Geometry3D) package sandy.core.scenegraph { import sandy.core.data.*; import flash.utils.*; public final class Geometry3D { public var aUVCoords:Array; public var aFacesUVCoordsID:Array; public var aFaceEdges:Array; private var EDGES_DICO:Dictionary; private var m_nLastVertexNormalId:int;// = 0 public var aFacesVertexID:Array; public var aVertexNormals:Array; private var m_nLastVertexId:int;// = 0 private var m_nLastNormalId:int;// = 0 public var aFacesNormals:Array; private var m_nLastFaceId:int;// = 0 private var m_aVertexFaces:Array; public var aVertex:Array; private var m_nLastFaceUVId:int;// = 0 private var m_nLastUVId:int;// = 0 public var aEdges:Array; public function Geometry3D(_arg1:Array=null){ EDGES_DICO = new Dictionary(true); aVertex = new Array(); aFacesVertexID = new Array(); aFacesUVCoordsID = new Array(); aFacesNormals = new Array(); aVertexNormals = new Array(); aEdges = new Array(); aFaceEdges = new Array(); aUVCoords = new Array(); m_nLastVertexId = 0; m_nLastNormalId = 0; m_nLastFaceId = 0; m_nLastFaceUVId = 0; m_nLastUVId = 0; m_nLastVertexNormalId = 0; m_aVertexFaces = new Array(); super(); init(); } public function setUVCoords(_arg1:int, _arg2:Number, _arg3:Number):int{ if (aUVCoords[_arg1]){ return (-1); }; aUVCoords[_arg1] = new UVCoord(_arg2, _arg3); return ((++m_nLastUVId - 1)); } public function init():void{ } public function getNextFaceID():int{ return (m_nLastFaceId); } public function generateFaceNormals():void{ var _local1:Array; var _local2:Vertex; var _local3:Vertex; var _local4:Vertex; var _local5:Point3D; var _local6:Point3D; var _local7:Point3D; if (aFacesNormals.length > 0){ return; }; for each (_local1 in aFacesVertexID) { if (_local1.length < 3){ } else { _local2 = aVertex[_local1[0]]; _local3 = aVertex[_local1[1]]; _local4 = aVertex[_local1[2]]; _local5 = new Point3D((_local3.wx - _local2.wx), (_local3.wy - _local2.wy), (_local3.wz - _local2.wz)); _local6 = new Point3D((_local3.wx - _local4.wx), (_local3.wy - _local4.wy), (_local3.wz - _local4.wz)); _local7 = _local5.cross(_local6); _local7.normalize(); setFaceNormal(getNextFaceNormalID(), _local7.x, _local7.y, _local7.z); }; }; } public function setVertex(_arg1:int, _arg2:Number, _arg3:Number, _arg4:Number):int{ if (aVertex[_arg1]){ return (-1); }; aVertex[_arg1] = new Vertex(_arg2, _arg3, _arg4); return ((++m_nLastVertexId - 1)); } public function setFaceNormal(_arg1:int, _arg2:Number, _arg3:Number, _arg4:Number):int{ if (aFacesNormals[_arg1]){ return (-1); }; aFacesNormals[_arg1] = new Vertex(_arg2, _arg3, _arg4); return ((++m_nLastNormalId - 1)); } public function getNextUVCoordID():int{ return (m_nLastUVId); } public function generateVertexNormals():void{ var _local1:uint; var _local2:Array; var _local3:Vertex; var _local4:Vertex; if (aVertexNormals.length > 0){ return; }; _local1 = 0; _local1 = 0; while (_local1 < aFacesVertexID.length) { _local2 = aFacesVertexID[_local1]; _local3 = aFacesNormals[_local1]; if (_local3 == null){ } else { if (null == aVertexNormals[_local2[0]]){ m_nLastVertexNormalId++; aVertexNormals[_local2[0]] = new Vertex(); }; Vertex(aVertexNormals[_local2[0]]).add(_local3); if (null == aVertexNormals[_local2[1]]){ m_nLastVertexNormalId++; aVertexNormals[_local2[1]] = new Vertex(); }; Vertex(aVertexNormals[_local2[1]]).add(_local3); if (null == aVertexNormals[_local2[2]]){ m_nLastVertexNormalId++; aVertexNormals[_local2[2]] = new Vertex(); }; Vertex(aVertexNormals[_local2[2]]).add(_local3); if ((aVertex[_local2[0]] as Vertex).aFaces.indexOf(_local1) == 0){ (aVertex[_local2[0]] as Vertex).aFaces.push(_local1); }; if ((aVertex[_local2[1]] as Vertex).aFaces.indexOf(_local1) == 0){ (aVertex[_local2[1]] as Vertex).aFaces.push(_local1); }; if ((aVertex[_local2[2]] as Vertex).aFaces.indexOf(_local1) == 0){ (aVertex[_local2[2]] as Vertex).aFaces.push(_local1); }; aVertex[_local2[0]].nbFaces++; aVertex[_local2[1]].nbFaces++; aVertex[_local2[2]].nbFaces++; }; _local1++; }; _local1 = 0; while (_local1 < aVertexNormals.length) { _local4 = aVertex[_local1]; if (_local4.nbFaces){ Vertex(aVertexNormals[_local1]).scale((1 / _local4.nbFaces)); }; _local1++; }; } public function setVertexNormal(_arg1:int, _arg2:Number, _arg3:Number, _arg4:Number):int{ if (aVertexNormals[_arg1]){ return (-1); }; aVertexNormals[_arg1] = new Vertex(_arg2, _arg3, _arg4); return ((++m_nLastVertexNormalId - 1)); } private function isEdgeExist(_arg1:uint, _arg2:uint):Boolean{ var _local3:String; if (_arg1 < _arg2){ _local3 = ((_arg1 + "_") + _arg2); } else { _local3 = ((_arg2 + "_") + _arg1); }; if (EDGES_DICO[_local3] == null){ return (false); }; return (true); } public function dispose():void{ var _local1:Array; var _local2:Vertex; var _local3:Array; var _local4:UVCoord; for each (_local2 in aVertex) { _local2 = null; }; aVertex = null; for each (_local1 in aFacesVertexID) { _local1 = null; }; aFacesVertexID = null; for each (_local2 in aFacesNormals) { _local2 = null; }; aFacesNormals = null; for each (_local2 in aVertexNormals) { _local2 = null; }; aVertexNormals = null; for each (_local3 in aFacesUVCoordsID) { _local3 = null; }; aFacesUVCoordsID = null; for each (_local4 in aUVCoords) { _local4 = null; }; aUVCoords = null; } public function getNextVertexID():int{ return (m_nLastVertexId); } public function getNextFaceUVCoordID():int{ return (m_nLastFaceUVId); } public function getNextFaceNormalID():int{ return (m_nLastNormalId); } public function getVertexId(_arg1:Vertex):int{ return (aVertex.indexOf(_arg1)); } public function setFaceUVCoordsIds(_arg1:int, ... _args):int{ var _local3:Array; if (aFacesUVCoordsID[_arg1]){ return (-1); }; _local3 = ((_args[0] is Array)) ? _args[0] : _args.splice(0); aFacesUVCoordsID[_arg1] = _local3; return ((++m_nLastFaceUVId - 1)); } public function clone():Geometry3D{ var _local1:Geometry3D; var _local2:uint; var _local3:Vertex; var _local4:Array; var _local5:Array; var _local6:UVCoord; var _local7:Edge3D; var _local8:Array; _local1 = new Geometry3D(); _local2 = 0; for each (_local3 in aVertex) { _local1.aVertex[_local2] = _local3.clone(); _local2++; }; _local2 = 0; for each (_local4 in aFacesVertexID) { _local1.aFacesVertexID[_local2] = _local4.concat(); _local2++; }; _local2 = 0; for each (_local3 in aFacesNormals) { _local1.aFacesNormals[_local2] = _local3.clone(); _local2++; }; _local2 = 0; for each (_local3 in aVertexNormals) { _local1.aVertexNormals[_local2] = _local3.clone(); _local2++; }; _local2 = 0; for each (_local5 in aFacesUVCoordsID) { _local1.aFacesUVCoordsID[_local2] = _local5.concat(); _local2++; }; _local2 = 0; for each (_local6 in aUVCoords) { _local1.aUVCoords[_local2] = _local6.clone(); _local2++; }; _local2 = 0; for each (_local7 in aEdges) { _local1.aEdges[_local2] = _local7.clone(); _local2++; }; _local2 = 0; for each (_local8 in aFaceEdges) { _local1.aFaceEdges[_local2] = _local8.concat(); _local2++; }; return (_local1); } public function getNextVertexNormalID():int{ return (m_nLastVertexNormalId); } public function setFaceVertexIds(_arg1:int, ... _args):int{ var _local3:Array; var _local4:uint; var _local5:uint; var _local6:uint; var _local7:uint; var _local8:String; if (aFacesVertexID[_arg1]){ return (-1); }; _local3 = ((_args[0] is Array)) ? _args[0] : _args.splice(0); aFacesVertexID[_arg1] = _local3; _local4 = 0; while (_local4 < _local3.length) { _local5 = _local3[_local4]; _local6 = _local3[((_local4 + 1) % _local3.length)]; if (isEdgeExist(_local5, _local6) == false){ _local7 = (aEdges.push(new Edge3D(_local5, _local6)) - 1); if (_local5 < _local6){ _local8 = ((_local5 + "_") + _local6); } else { _local8 = ((_local6 + "_") + _local5); }; EDGES_DICO[_local8] = _local7; } else { if (_local5 < _local6){ _local8 = ((_local5 + "_") + _local6); } else { _local8 = ((_local6 + "_") + _local5); }; _local7 = EDGES_DICO[_local8]; }; if (null == aFaceEdges[_arg1]){ aFaceEdges[_arg1] = new Array(); }; (aFaceEdges[_arg1] as Array).push(_local7); _local4++; }; return ((++m_nLastFaceId - 1)); } public function toString():String{ return ((((((((("[Geometry: " + aFacesVertexID.length) + " faces, ") + aVertex.length) + " points, ") + aFacesNormals.length) + " normals, ") + aUVCoords.length) + " uv coords]")); } } }//package sandy.core.scenegraph
Section 29
//Group (sandy.core.scenegraph.Group) package sandy.core.scenegraph { import sandy.core.data.*; import sandy.view.*; public class Group extends Node { public function Group(_arg1:String=""){ super(_arg1); } public function clone(_arg1:String):Group{ var _local2:Group; var _local3:*; _local2 = new Group(_arg1); for each (_local3 in children) { if ((((((_local3 is Shape3D)) || ((_local3 is Group)))) || ((_local3 is TransformGroup)))){ _local2.addChild(_local3.clone(((_arg1 + "_") + _local3.name))); }; }; return (_local2); } override public function toString():String{ return ((("sandy.core.scenegraph.Group :[" + name) + "]")); } override public function cull(_arg1:Frustum, _arg2:Matrix4, _arg3:Boolean):void{ var _local4:Boolean; var _local5:Node; if (visible == false){ culled = CullingState.OUTSIDE; } else { _local4 = ((_arg3) || (changed)); for each (_local5 in children) { _local5.cull(_arg1, _arg2, _local4); }; }; } } }//package sandy.core.scenegraph
Section 30
//IDisplayable (sandy.core.scenegraph.IDisplayable) package sandy.core.scenegraph { import flash.display.*; public interface IDisplayable { function get container():Sprite; function display(_arg1:Sprite=null):void; function get depth():Number; function get changed():Boolean; function clear():void; } }//package sandy.core.scenegraph
Section 31
//INodeOperation (sandy.core.scenegraph.INodeOperation) package sandy.core.scenegraph { public interface INodeOperation { function performOnEntry(_arg1:Node):void; function performOnExit(_arg1:Node):void; } }//package sandy.core.scenegraph
Section 32
//Node (sandy.core.scenegraph.Node) package sandy.core.scenegraph { import sandy.materials.*; import sandy.core.*; import sandy.core.data.*; import flash.events.*; import sandy.events.*; import sandy.view.*; import sandy.bounds.*; public class Node { public const children:Array; public const id:uint; public const viewMatrix:Matrix4; public const modelMatrix:Matrix4; protected var m_oEB:BubbleEventBroadcaster; public var name:String; public var boundingBox:BBox; public var culled:CullingState; protected var m_bChanged:Boolean; public var boundingSphere:BSphere; private var _parent:Node; protected var m_oScene:Scene3D;// = null public var visible:Boolean;// = true private static var _ID_:uint = 0; public function Node(_arg1:String=""){ culled = CullingState.OUTSIDE; children = new Array(); modelMatrix = new Matrix4(); viewMatrix = new Matrix4(); boundingBox = new BBox(); boundingSphere = new BSphere(); id = _ID_++; visible = true; m_oScene = null; super(); parent = null; if (((_arg1) && (!((_arg1 == ""))))){ name = _arg1; } else { name = id.toString(); }; changed = true; m_oEB = new BubbleEventBroadcaster(this); culled = CullingState.INSIDE; scene = null; boundingBox.reset(); boundingSphere.reset(); } public function remove():void{ var _local1:Array; var _local2:Node; parent.removeChildByName(name); _local1 = children.concat(); for each (_local2 in _local1) { parent.addChild(_local2); }; children.splice(0); m_oEB = null; changed = true; } public function getChildByName(_arg1:String, _arg2:Boolean=false):Node{ var _local3:Node; var _local4:Node; for each (_local3 in children) { if (_local3.name == _arg1){ return (_local3); }; }; if (_arg2){ _local4 = null; for each (_local3 in children) { _local4 = _local3.getChildByName(_arg1, _arg2); if (_local4 != null){ return (_local4); }; }; }; return (null); } public function removeChildByName(_arg1:String):Boolean{ var _local2:Boolean; var _local3:int; var _local4:int; _local2 = false; _local4 = children.length; while ((((_local3 < _local4)) && (!(_local2)))) { if (children[int(_local3)].name == _arg1){ broadcaster.removeChild(children[int(_local3)].broadcaster); children.splice(_local3, 1); changed = true; _local2 = true; }; _local3++; }; return (_local2); } public function swapParent(_arg1:Node):void{ if (parent.removeChildByName(this.name)){ }; _arg1.addChild(this); } public function set scene(_arg1:Scene3D):void{ var _local2:Node; if (_arg1 == null){ return; }; if (m_oScene){ m_oScene.removeEventListener(SandyEvent.SCENE_RENDER_FINISH, _updateFlags); }; m_oScene = _arg1; m_oScene.addEventListener(SandyEvent.SCENE_RENDER_FINISH, _updateFlags); for each (_local2 in children) { _local2.scene = m_oScene; }; } public function set useSingleContainer(_arg1:Boolean):void{ var _local2:Node; for each (_local2 in children) { _local2.useSingleContainer = _arg1; }; } public function get parent():Node{ return (_parent); } public function get broadcaster():BubbleEventBroadcaster{ return (m_oEB); } public function get changed():Boolean{ return (m_bChanged); } public function get scene():Scene3D{ return (m_oScene); } public function set appearance(_arg1:Appearance):void{ var _local2:Node; for each (_local2 in children) { _local2.appearance = _arg1; }; } public function update(_arg1:Matrix4, _arg2:Boolean):void{ var _local3:Node; culled = CullingState.INSIDE; if (boundingBox){ boundingBox.uptodate = false; }; if (boundingSphere){ boundingSphere.uptodate = false; }; changed = ((changed) || (_arg2)); for each (_local3 in children) { _local3.update(_arg1, changed); }; } public function updateBoundingVolumes():void{ } public function addEventListener(_arg1:String, _arg2):Boolean{ return (m_oEB.addEventListener.apply(_arg1, arguments)); } public function set enableInteractivity(_arg1:Boolean):void{ var _local2:Node; for each (_local2 in children) { _local2.enableInteractivity = _arg1; }; } public function removeEventListener(_arg1:String, _arg2):void{ m_oEB.removeEventListener(_arg1, _arg2); } public function set enableBackFaceCulling(_arg1:Boolean):void{ var _local2:Node; for each (_local2 in children) { _local2.enableBackFaceCulling = _arg1; }; } public function set parent(_arg1:Node):void{ if (_arg1){ _parent = _arg1; changed = true; }; } public function perform(_arg1:INodeOperation):void{ var _local2:Node; _arg1.performOnEntry(this); for each (_local2 in children) { _local2.perform(_arg1); }; _arg1.performOnExit(this); } public function set changed(_arg1:Boolean):void{ m_bChanged = _arg1; } public function hasParent():Boolean{ return (!((_parent == null))); } public function toString():String{ return ("sandy.core.scenegraph.Node"); } public function isParent(_arg1:Node):Boolean{ return ((((_parent == _arg1)) && (!((_arg1 == null))))); } public function set enableEvents(_arg1:Boolean):void{ var _local2:Node; for each (_local2 in children) { _local2.enableEvents = _arg1; }; } public function cull(_arg1:Frustum, _arg2:Matrix4, _arg3:Boolean):void{ if (visible == false){ culled = CullingState.OUTSIDE; } else { if (((_arg3) || (changed))){ viewMatrix.copy(_arg2); viewMatrix.multiply4x3(modelMatrix); }; }; } public function destroy():void{ var _local1:Array; var _local2:Node; if (hasParent() == true){ parent.removeChildByName(name); }; _local1 = children.concat(); for each (_local2 in _local1) { _local2.destroy(); }; children.splice(0); m_oEB = null; scene = null; } public function addChild(_arg1:Node):void{ if (_arg1.hasParent()){ _arg1.parent.removeChildByName(_arg1.name); }; _arg1.parent = this; changed = true; children.push(_arg1); if (_arg1.broadcaster){ m_oEB.addChild(_arg1.broadcaster); }; if (scene){ _arg1.scene = scene; }; } private function _updateFlags(_arg1:Event=null):void{ changed = false; } } }//package sandy.core.scenegraph
Section 33
//Renderable (sandy.core.scenegraph.Renderable) package sandy.core.scenegraph { public interface Renderable { function render(_arg1:Camera3D):void; } }//package sandy.core.scenegraph
Section 34
//Shape3D (sandy.core.scenegraph.Shape3D) package sandy.core.scenegraph { import sandy.materials.*; import sandy.core.*; import sandy.core.data.*; import flash.display.*; import flash.events.*; import sandy.events.*; import sandy.view.*; import sandy.bounds.*; import flash.geom.*; import sandy.math.*; public class Shape3D extends ATransformable implements IDisplayable { public const aVisiblePolygons:Array; protected var m_oContainer:Sprite; public var aPolygons:Array; private var m_oLastEvent:Shape3DEvent; protected var m_bUseSingleContainer:Boolean;// = true public var enableNearClipping:Boolean;// = false private var m_bWasOver:Boolean;// = false protected var m_nDepth:Number;// = 0 public var enableClipping:Boolean;// = false public var forcedDepth:Number;// = 0 private var m_oAppearance:Appearance; private var m_bMouseInteractivity:Boolean;// = false private var m_bBackFaceCulling:Boolean;// = true private var m_oGeometry:Geometry3D; protected var m_oGeomCenter:Point3D; private var m_bForcedSingleContainer:Boolean;// = false private var m_bEv:Boolean;// = false public var enableForcedDepth:Boolean;// = false public var animated:Boolean;// = false public static var DEFAULT_APPEARANCE:Appearance = new Appearance(DEFAULT_MATERIAL); public static var DEFAULT_MATERIAL:Material = new WireFrameMaterial(); public function Shape3D(_arg1:String="", _arg2:Geometry3D=null, _arg3:Appearance=null, _arg4:Boolean=true){ aPolygons = new Array(); enableNearClipping = false; enableClipping = false; enableForcedDepth = false; forcedDepth = 0; animated = false; aVisiblePolygons = new Array(); m_bEv = false; m_oGeomCenter = new Point3D(); m_bBackFaceCulling = true; m_bWasOver = false; m_bUseSingleContainer = true; m_nDepth = 0; m_bMouseInteractivity = false; m_bForcedSingleContainer = false; super(_arg1); m_oContainer = new Sprite(); m_oContainer.name = name; geometry = _arg2; m_bUseSingleContainer = !(_arg4); useSingleContainer = _arg4; appearance = (_arg3) ? _arg3 : Shape3D.DEFAULT_APPEARANCE; updateBoundingVolumes(); } override public function destroy():void{ m_oGeometry.dispose(); clear(); if (m_oContainer.parent){ m_oContainer.parent.removeChild(m_oContainer); }; if (m_oContainer){ m_oContainer = null; }; __destroyPolygons(); super.destroy(); } override public function set scene(_arg1:Scene3D):void{ var _local2:Polygon; super.scene = _arg1; for each (_local2 in aPolygons) { _local2.scene = null; _local2.scene = _arg1; }; } override public function set useSingleContainer(_arg1:Boolean):void{ var _local2:Polygon; if (_arg1 == m_bUseSingleContainer){ return; }; if (_arg1){ for each (_local2 in aPolygons) { if (_local2.container.parent){ _local2.container.graphics.clear(); _local2.container.parent.removeChild(_local2.container); this.broadcaster.removeChild(_local2.broadcaster); }; }; } else { if (m_oContainer.parent){ m_oContainer.graphics.clear(); m_oContainer.parent.removeChild(m_oContainer); }; for each (_local2 in aPolygons) { this.broadcaster.addChild(_local2.broadcaster); _local2.container.graphics.clear(); }; }; m_bUseSingleContainer = _arg1; } public function get enableInteractivity():Boolean{ return (m_bMouseInteractivity); } public function swapCulling():void{ var _local1:Polygon; for each (_local1 in aPolygons) { _local1.swapCulling(); }; changed = true; } override public function updateBoundingVolumes():void{ if (m_oGeometry){ boundingBox = BBox.create(m_oGeometry.aVertex); boundingSphere.resetFromBox(boundingBox); }; if (parent){ parent.updateBoundingVolumes(); }; } override public function set enableInteractivity(_arg1:Boolean):void{ var _local2:Polygon; if (_arg1 != m_bMouseInteractivity){ if (_arg1){ if (m_bUseSingleContainer == true){ m_bUseSingleContainer = false; m_bForcedSingleContainer = true; }; } else { if (m_bForcedSingleContainer == true){ useSingleContainer = true; m_bForcedSingleContainer = false; }; }; for each (_local2 in aPolygons) { _local2.enableInteractivity = _arg1; }; m_bMouseInteractivity = _arg1; }; } override public function set enableBackFaceCulling(_arg1:Boolean):void{ if (_arg1 != m_bBackFaceCulling){ m_bBackFaceCulling = _arg1; changed = true; }; } public function clear():void{ if (m_oContainer){ m_oContainer.graphics.clear(); }; } public function get geometryCenter():Point3D{ return (m_oGeomCenter); } public function get appearance():Appearance{ return (m_oAppearance); } override public function toString():String{ return ((("sandy.core.scenegraph.Shape3D" + " ") + m_oGeometry.toString())); } override public function cull(_arg1:Frustum, _arg2:Matrix4, _arg3:Boolean):void{ super.cull(_arg1, _arg2, _arg3); if (culled == Frustum.OUTSIDE){ return; }; boundingSphere.transform(viewMatrix); culled = _arg1.sphereInFrustum(boundingSphere); if (culled == Frustum.INTERSECT){ culled = _arg1.boxInFrustum(boundingBox.transform(viewMatrix)); }; if (((!((culled == CullingState.OUTSIDE))) && (!((m_oAppearance == null))))){ scene.renderer.addToDisplayList(this); }; if (m_bEv){ if ((((m_bWasOver == true)) && ((m_oContainer.hitTestPoint(m_oContainer.mouseX, m_oContainer.mouseY) == false)))){ m_oEB.dispatchEvent(new Shape3DEvent(MouseEvent.MOUSE_OUT, this, m_oLastEvent.polygon, m_oLastEvent.uv, m_oLastEvent.point, m_oLastEvent.event)); m_bWasOver = false; }; }; } public function clone(_arg1:String="", _arg2:Boolean=false):Shape3D{ var _local3:Shape3D; _local3 = new Shape3D(_arg1, geometry.clone(), appearance, m_bUseSingleContainer); if (_arg2 == true){ _local3.matrix = this.matrix; }; return (_local3); } public function get geometry():Geometry3D{ return (m_oGeometry); } public function set depth(_arg1:Number):void{ m_nDepth = _arg1; } public function get container():Sprite{ return (m_oContainer); } public function get useSingleContainer():Boolean{ return (m_bUseSingleContainer); } public function get enableBackFaceCulling():Boolean{ return (m_bBackFaceCulling); } private function __destroyPolygons():void{ var _local1:int; var _local2:int; if (((!((aPolygons == null))) && ((aPolygons.length > 0)))){ _local2 = aPolygons.length; while (_local1 < _local2) { if (broadcaster != null){ broadcaster.removeChild(aPolygons[_local1].broadcaster); }; if (aPolygons[_local1]){ Polygon(aPolygons[int(_local1)]).destroy(); }; aPolygons[int(_local1)] = null; _local1++; }; }; aPolygons.splice(0); aPolygons = null; } public function display(_arg1:Sprite=null):void{ var _local2:Polygon; aVisiblePolygons.sortOn("depth", (Array.NUMERIC | Array.DESCENDING)); for each (_local2 in aVisiblePolygons) { _local2.display(m_oContainer); }; } override public function set appearance(_arg1:Appearance):void{ var _local2:Polygon; m_oAppearance = _arg1; if (m_oGeometry){ for each (_local2 in aPolygons) { _local2.appearance = m_oAppearance; }; }; } public function get depth():Number{ return (m_nDepth); } public function set geometryCenter(_arg1:Point3D):void{ var _local2:Point3D; var _local3:Vertex; _local2 = _arg1.clone(); _local2.sub(m_oGeomCenter); if (m_oGeometry){ for each (_local3 in m_oGeometry.aVertex) { _local3.x = (_local3.x + _local2.x); _local3.y = (_local3.y + _local2.y); _local3.z = (_local3.z + _local2.z); }; }; m_oGeomCenter.copy(_arg1); updateBoundingVolumes(); } protected function _onInteraction(_arg1:Event):void{ var _local2:Point; var _local3:Point; var _local4:Point; var _local5:Point; var _local6:Polygon; var _local7:Array; var _local8:int; var _local9:int; var _local10:int; var _local11:int; var _local12:int; var _local13:UVCoord; var _local14:Point3D; _local2 = new Point(m_oContainer.mouseX, m_oContainer.mouseY); _local3 = new Point(); _local4 = new Point(); _local5 = new Point(); _local7 = aPolygons.sortOn("depth", (Array.NUMERIC | Array.RETURNINDEXEDARRAY)); _local8 = aPolygons.length; _local9 = 0; while (_local9 < _local8) { _local6 = aPolygons[_local7[int(_local9)]]; if (((!(_local6.visible)) && (m_bBackFaceCulling))){ } else { _local10 = _local6.vertices.length; _local11 = (_local10 - 2); _local12 = 0; while (_local12 < _local11) { _local3.x = _local6.vertices[_local12].sx; _local3.y = _local6.vertices[_local12].sy; _local4.x = _local6.vertices[(_local12 + 1)].sx; _local4.y = _local6.vertices[(_local12 + 1)].sy; _local5.x = _local6.vertices[((_local12 + 2) % _local10)].sx; _local5.y = _local6.vertices[((_local12 + 2) % _local10)].sy; if (IntersectionMath.isPointInTriangle2D(_local2, _local3, _local4, _local5)){ _local13 = _local6.getUVFrom2D(_local2); _local14 = _local6.get3DFrom2D(_local2); m_oLastEvent = new Shape3DEvent(_arg1.type, this, _local6, _local13, _local14, _arg1); m_oEB.dispatchEvent(m_oLastEvent); if (_arg1.type == MouseEvent.MOUSE_OVER){ m_bWasOver = true; }; return; }; _local12++; }; }; _local9 = (_local9 + 1); }; } private function __generatePolygons(_arg1:Geometry3D):void{ var _local2:int; var _local3:int; _local2 = 0; _local3 = _arg1.aFacesVertexID.length; aPolygons = new Array(_local3); _local2 = 0; while (_local2 < _local3) { aPolygons[_local2] = new Polygon(this, _arg1, _arg1.aFacesVertexID[_local2], _arg1.aFacesUVCoordsID[_local2], _local2, _local2); if (m_oAppearance){ aPolygons[int(_local2)].appearance = m_oAppearance; }; this.broadcaster.addChild(aPolygons[int(_local2)].broadcaster); _local2 = (_local2 + 1); }; } override public function set enableEvents(_arg1:Boolean):void{ var _local2:Polygon; _local2 = null; if (_arg1){ if (!m_bEv){ if (m_bUseSingleContainer == false){ for each (_local2 in aPolygons) { _local2.enableEvents = true; }; } else { m_oContainer.addEventListener(MouseEvent.CLICK, _onInteraction); m_oContainer.addEventListener(MouseEvent.MOUSE_UP, _onInteraction); m_oContainer.addEventListener(MouseEvent.MOUSE_DOWN, _onInteraction); m_oContainer.addEventListener(MouseEvent.ROLL_OVER, _onInteraction); m_oContainer.addEventListener(MouseEvent.ROLL_OUT, _onInteraction); m_oContainer.addEventListener(MouseEvent.DOUBLE_CLICK, _onInteraction); m_oContainer.addEventListener(MouseEvent.MOUSE_OVER, _onInteraction); m_oContainer.addEventListener(MouseEvent.MOUSE_OUT, _onInteraction); m_oContainer.addEventListener(MouseEvent.MOUSE_WHEEL, _onInteraction); }; }; } else { if (((!(_arg1)) && (m_bEv))){ if (m_bUseSingleContainer == false){ for each (_local2 in aPolygons) { _local2.enableEvents = false; }; } else { m_oContainer.removeEventListener(MouseEvent.CLICK, _onInteraction); m_oContainer.removeEventListener(MouseEvent.MOUSE_UP, _onInteraction); m_oContainer.removeEventListener(MouseEvent.MOUSE_DOWN, _onInteraction); m_oContainer.removeEventListener(MouseEvent.ROLL_OVER, _onInteraction); m_oContainer.removeEventListener(MouseEvent.ROLL_OUT, _onInteraction); m_oContainer.removeEventListener(MouseEvent.DOUBLE_CLICK, _onInteraction); m_oContainer.removeEventListener(MouseEvent.MOUSE_OVER, _onInteraction); m_oContainer.removeEventListener(MouseEvent.MOUSE_OUT, _onInteraction); m_oContainer.removeEventListener(MouseEvent.MOUSE_WHEEL, _onInteraction); }; }; }; m_bEv = _arg1; } public function set geometry(_arg1:Geometry3D):void{ if (_arg1 == null){ return; }; m_oGeometry = _arg1; updateBoundingVolumes(); m_oGeometry.generateFaceNormals(); m_oGeometry.generateVertexNormals(); __destroyPolygons(); __generatePolygons(m_oGeometry); } } }//package sandy.core.scenegraph
Section 35
//Sprite2D (sandy.core.scenegraph.Sprite2D) package sandy.core.scenegraph { import sandy.materials.*; import sandy.core.*; import sandy.core.data.*; import flash.display.*; import flash.events.*; import sandy.events.*; import sandy.view.*; public class Sprite2D extends ATransformable implements IDisplayable { private var m_nH2:Number;// = 0 private var m_oContainer:Sprite; protected var m_nDepth:Number; protected var m_oContent:DisplayObject; protected var m_nRotation:Number;// = 0 public var forcedDepth:Number;// = 0 protected var m_oMaterial:Material; protected var m_nPerspScaleY:Number;// = 0 protected var m_nPerspScaleX:Number;// = 0 public var v:Vertex; public var floorCenter:Boolean;// = false protected var _nScale:Number; public var fixedAngle:Boolean;// = false public var vx:Vertex; public var vy:Vertex; private var m_bEv:Boolean;// = false private var m_nW2:Number;// = 0 public var enableForcedDepth:Boolean;// = false public var autoCenter:Boolean;// = true public function Sprite2D(_arg1:String="", _arg2:DisplayObject=null, _arg3:Number=1){ fixedAngle = false; autoCenter = true; floorCenter = false; enableForcedDepth = false; forcedDepth = 0; m_bEv = false; m_nW2 = 0; m_nH2 = 0; m_nPerspScaleX = 0; m_nPerspScaleY = 0; m_nRotation = 0; super(_arg1); m_oContainer = new Sprite(); v = new Vertex(); vx = new Vertex(); vy = new Vertex(); _nScale = _arg3; if (_arg2){ content = _arg2; }; setBoundingSphereRadius(Math.max(30, (Math.abs(_nScale) * Math.max(content.width, content.height)))); } private function _finishMaterial(_arg1:SandyEvent):void{ if (!m_oMaterial){ return; }; if (!visible){ return; }; m_oMaterial.finish(scene); } override public function destroy():void{ remove(); super.destroy(); } public function setBoundingSphereRadius(_arg1:Number):void{ boundingSphere.radius = _arg1; } private function _beginMaterial(_arg1:SandyEvent):void{ if (!m_oMaterial){ return; }; if (!visible){ return; }; m_oMaterial.begin(scene); } public function set content(_arg1:DisplayObject):void{ _arg1.transform.matrix.identity(); if (m_oContent){ m_oContainer.removeChild(m_oContent); }; m_oContent = _arg1; m_oContainer.addChildAt(m_oContent, 0); m_oContent.x = 0; m_oContent.y = 0; m_nW2 = (m_oContainer.width / 2); m_nH2 = (m_oContainer.height / 2); } override public function set scene(_arg1:Scene3D):void{ if (_arg1 == null){ return; }; if (scene){ scene.removeEventListener(SandyEvent.SCENE_RENDER_FINISH, _finishMaterial); scene.removeEventListener(SandyEvent.SCENE_RENDER_DISPLAYLIST, _beginMaterial); }; super.scene = _arg1; scene.addEventListener(SandyEvent.SCENE_RENDER_FINISH, _finishMaterial); scene.addEventListener(SandyEvent.SCENE_RENDER_DISPLAYLIST, _beginMaterial); } public function get material():Material{ return (m_oMaterial); } public function get scale():Number{ return (_nScale); } public function clear():void{ } override public function toString():String{ return (("sandy.core.scenegraph.Sprite2D, container:" + m_oContainer)); } public function set material(_arg1:Material):void{ m_oMaterial = _arg1; } override public function cull(_arg1:Frustum, _arg2:Matrix4, _arg3:Boolean):void{ super.cull(_arg1, _arg2, _arg3); if (visible == false){ container.visible = visible; return; }; if (viewMatrix){ boundingSphere.transform(viewMatrix); culled = _arg1.sphereInFrustum(boundingSphere); }; if (culled == CullingState.OUTSIDE){ container.visible = false; } else { if (culled == CullingState.INTERSECT){ if (boundingSphere.position.z <= scene.camera.near){ container.visible = false; } else { container.visible = true; scene.renderer.addToDisplayList(this); }; } else { container.visible = true; scene.renderer.addToDisplayList(this); }; }; } public function get enableEvents():Boolean{ return (m_bEv); } override public function remove():void{ if (m_oContainer.parent){ m_oContainer.parent.removeChild(m_oContainer); }; m_oContainer.graphics.clear(); enableEvents = false; if (scene){ scene.removeEventListener(SandyEvent.SCENE_RENDER_FINISH, _finishMaterial); scene.removeEventListener(SandyEvent.SCENE_RENDER_DISPLAYLIST, _beginMaterial); }; super.remove(); } public function set depth(_arg1:Number):void{ m_nDepth = _arg1; } public function set scale(_arg1:Number):void{ if (_arg1){ _nScale = _arg1; }; } public function get container():Sprite{ return (m_oContainer); } public function get content():DisplayObject{ return (m_oContent); } public function display(_arg1:Sprite=null):void{ m_nPerspScaleX = ((_nScale)==0) ? 1 : (_nScale * (vx.sx - v.sx)); m_nPerspScaleY = ((_nScale)==0) ? 1 : (_nScale * (v.sy - vy.sy)); m_nRotation = Math.atan2(viewMatrix.n12, viewMatrix.n22); m_oContainer.scaleX = m_nPerspScaleX; m_oContainer.scaleY = m_nPerspScaleY; m_oContainer.x = (v.sx - (autoCenter) ? (m_oContainer.width / 2) : 0); m_oContainer.y = (v.sy - (autoCenter) ? (m_oContainer.height / 2) : (floorCenter) ? m_oContainer.height : 0); if (fixedAngle){ m_oContainer.rotation = ((m_nRotation * 180) / Math.PI); }; if (m_oMaterial){ m_oMaterial.renderSprite(this, m_oMaterial, scene); }; } public function get depth():Number{ return (m_nDepth); } protected function _onInteraction(_arg1:Event):void{ m_oEB.dispatchEvent(new BubbleEvent(_arg1.type, this)); } override public function set enableEvents(_arg1:Boolean):void{ if (((_arg1) && (!(m_bEv)))){ m_oContainer.addEventListener(MouseEvent.CLICK, _onInteraction); m_oContainer.addEventListener(MouseEvent.MOUSE_UP, _onInteraction); m_oContainer.addEventListener(MouseEvent.MOUSE_DOWN, _onInteraction); m_oContainer.addEventListener(MouseEvent.ROLL_OVER, _onInteraction); m_oContainer.addEventListener(MouseEvent.ROLL_OUT, _onInteraction); m_oContainer.addEventListener(MouseEvent.DOUBLE_CLICK, _onInteraction); m_oContainer.addEventListener(MouseEvent.MOUSE_MOVE, _onInteraction); m_oContainer.addEventListener(MouseEvent.MOUSE_OVER, _onInteraction); m_oContainer.addEventListener(MouseEvent.MOUSE_OUT, _onInteraction); m_oContainer.addEventListener(MouseEvent.MOUSE_WHEEL, _onInteraction); } else { if (((!(_arg1)) && (m_bEv))){ m_oContainer.removeEventListener(MouseEvent.CLICK, _onInteraction); m_oContainer.removeEventListener(MouseEvent.MOUSE_UP, _onInteraction); m_oContainer.removeEventListener(MouseEvent.MOUSE_DOWN, _onInteraction); m_oContainer.removeEventListener(MouseEvent.ROLL_OVER, _onInteraction); m_oContainer.removeEventListener(MouseEvent.ROLL_OUT, _onInteraction); m_oContainer.removeEventListener(MouseEvent.DOUBLE_CLICK, _onInteraction); m_oContainer.removeEventListener(MouseEvent.MOUSE_MOVE, _onInteraction); m_oContainer.removeEventListener(MouseEvent.MOUSE_OVER, _onInteraction); m_oContainer.removeEventListener(MouseEvent.MOUSE_OUT, _onInteraction); m_oContainer.removeEventListener(MouseEvent.MOUSE_WHEEL, _onInteraction); }; }; } } }//package sandy.core.scenegraph
Section 36
//StarField (sandy.core.scenegraph.StarField) package sandy.core.scenegraph { import sandy.core.data.*; import flash.display.*; import sandy.events.*; import sandy.view.*; import flash.geom.*; public class StarField extends ATransformable implements IDisplayable, Renderable { public var fadeTo:Number;// = 1000 private var m_nDepth:Number;// = 10000000000 private var m_oMatrix:Matrix; public var fadeFrom:Number;// = 0 public var starColors:Array; private var m_oEventBefore:StarFieldRenderEvent; private var _vy:Vertex; private var m_oEventAfter:StarFieldRenderEvent; public var stars:Array; private var m_sBlendMode:String;// = "" private var m_oBitmapData:BitmapData; private var _vx:Vertex; private var m_oBitmap:Bitmap; private var m_oColorTransform:ColorTransform; public var depthIndex:int;// = -1 public var starSprites:Array; private var m_oContainer:Sprite; public function StarField(_arg1:String=""){ fadeFrom = 0; fadeTo = 1000; stars = []; starColors = []; starSprites = []; depthIndex = -1; m_nDepth = 10000000000; m_oMatrix = new Matrix(); m_oColorTransform = new ColorTransform(); m_sBlendMode = ""; super(_arg1); m_oContainer = new Sprite(); m_oBitmapData = new BitmapData(1, 1, true, 0); makeEvents(); m_oBitmap = new Bitmap(m_oBitmapData); m_oContainer.addChild(m_oBitmap); _vx = new Vertex(); _vy = new Vertex(); } override public function destroy():void{ remove(); super.destroy(); } private function resetEvents():void{ m_oEventBefore.clear = true; m_oEventAfter.clear = false; } public function clear():void{ } override public function cull(_arg1:Frustum, _arg2:Matrix4, _arg3:Boolean):void{ super.cull(_arg1, _arg2, _arg3); if (((!((m_oBitmapData.width == scene.camera.viewport.width))) || (!((m_oBitmapData.height == scene.camera.viewport.height))))){ m_oBitmap.bitmapData.dispose(); m_oBitmapData = new BitmapData(scene.camera.viewport.width, scene.camera.viewport.height, true, 0); makeEvents(); m_oBitmap.bitmapData = m_oBitmapData; }; scene.renderer.addToDisplayList(this); } override public function remove():void{ m_oBitmap.bitmapData.dispose(); if (m_oContainer.parent){ m_oContainer.parent.removeChild(m_oContainer); }; super.remove(); } public function set depth(_arg1:Number):void{ m_nDepth = _arg1; } public function get container():Sprite{ return (m_oContainer); } public function render(_arg1:Camera3D):void{ var _local2:int; 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:Vertex; var _local12:IBitmapDrawable; resetEvents(); m_oBitmapData.lock(); m_oEB.dispatchEvent(m_oEventBefore); if (m_oEventBefore.clear){ m_oBitmapData.fillRect(m_oBitmapData.rect, 0); }; _local2 = 0; _local2 = 0; while (_local2 < stars.length) { _local11 = stars[_local2]; stars[_local2].wx = ((((_local11.x * viewMatrix.n11) + (_local11.y * viewMatrix.n12)) + (_local11.z * viewMatrix.n13)) + viewMatrix.n14); _local11.wy = ((((_local11.x * viewMatrix.n21) + (_local11.y * viewMatrix.n22)) + (_local11.z * viewMatrix.n23)) + viewMatrix.n24); _local11.wz = ((((_local11.x * viewMatrix.n31) + (_local11.y * viewMatrix.n32)) + (_local11.z * viewMatrix.n33)) + viewMatrix.n34); if (_local11.wz >= _arg1.near){ _local6 = Math.min(1, Math.max(0, ((_local11.wz - fadeFrom) / fadeTo))); if (_local6 < 1){ _local3 = ((_local2)<starColors.length) ? Number(starColors[_local2]) : 4294967295; _local4 = ((_local3 / 16777216) * (1 - _local6)); _local5 = (_local3 & 0xFFFFFF); _arg1.projectVertex(_local11); if ((((_local2 < starSprites.length)) && ((starSprites[_local2] is IBitmapDrawable)))){ _vx.copy(_local11); _vx.wx++; _arg1.projectVertex(_vx); _vy.copy(_local11); _vy.wy++; _arg1.projectVertex(_vy); m_oMatrix.tx = _local11.sx; m_oMatrix.a = (_vx.sx - _local11.sx); m_oMatrix.ty = _local11.sy; m_oMatrix.d = (_local11.sy - _vy.sy); if (_local5 != 0xFFFFFF){ _local7 = ((0xFF0000 & _local5) >> 16); _local8 = ((0xFF00 & _local5) >> 8); _local9 = (0xFF & _local5); _local10 = (1.7321 / Math.sqrt((((_local7 * _local7) + (_local8 * _local8)) + (_local9 * _local9)))); _local7 = (_local7 * _local10); _local8 = (_local8 * _local10); _local9 = (_local9 * _local10); } else { _local9 = 1; _local8 = _local9; _local7 = _local8; }; m_oColorTransform.redMultiplier = _local7; m_oColorTransform.greenMultiplier = _local8; m_oColorTransform.blueMultiplier = _local9; m_oColorTransform.alphaMultiplier = (_local4 / 0xFF); _local12 = starSprites[_local2]; m_sBlendMode = (((_local12 as DisplayObject))==null) ? "normal" : DisplayObject(_local12).blendMode; m_oBitmapData.draw(_local12, m_oMatrix, m_oColorTransform, m_sBlendMode); } else { m_oBitmapData.setPixel32(_local11.sx, _local11.sy, (_local5 + (int(_local4) * 16777216))); }; }; }; _local2++; }; m_oEB.dispatchEvent(m_oEventAfter); if (m_oEventAfter.clear){ m_oBitmapData.fillRect(m_oBitmapData.rect, 0); }; m_oBitmapData.unlock(); } private function makeEvents():void{ m_oEventBefore = new StarFieldRenderEvent(StarFieldRenderEvent.BEFORE_RENDER, this, m_oBitmapData, true); m_oEventAfter = new StarFieldRenderEvent(StarFieldRenderEvent.AFTER_RENDER, this, m_oBitmapData, false); } public function get depth():Number{ var _local1:Vertex; _local1 = (stars[depthIndex] as Vertex); if (_local1 != null){ return (_local1.wz); }; return (m_nDepth); } public function display(_arg1:Sprite=null):void{ m_oContainer.x = 0; m_oContainer.y = 0; } } }//package sandy.core.scenegraph
Section 37
//TransformGroup (sandy.core.scenegraph.TransformGroup) package sandy.core.scenegraph { import sandy.core.data.*; import sandy.view.*; public class TransformGroup extends ATransformable { public function TransformGroup(_arg1:String=""){ super(_arg1); } override public function toString():String{ return ((("sandy.core.scenegraph.TransformGroup :[" + name) + "]")); } override public function cull(_arg1:Frustum, _arg2:Matrix4, _arg3:Boolean):void{ var _local4:Boolean; var _local5:Node; if (visible == false){ culled = CullingState.OUTSIDE; } else { _local4 = ((_arg3) || (changed)); for each (_local5 in children) { _local5.cull(_arg1, _arg2, _local4); }; }; } public function clone(_arg1:String):TransformGroup{ var _local2:TransformGroup; var _local3:*; _local2 = new TransformGroup(_arg1); for each (_local3 in children) { if ((((((_local3 is Shape3D)) || ((_local3 is Group)))) || ((_local3 is TransformGroup)))){ _local2.addChild(_local3.clone(((_arg1 + "_") + _local3.name))); }; }; return (_local2); } } }//package sandy.core.scenegraph
Section 38
//Renderer (sandy.core.Renderer) package sandy.core { import sandy.core.data.*; import flash.display.*; import sandy.core.scenegraph.*; import sandy.view.*; public class Renderer { protected const m_aDisplayList:Array; protected const m_aRenderingList:Array; private var m_bGlobalRedraw:Boolean; protected var m_nDisplayListCount:int; protected var m_nRenderingListCount:int; protected var m_aCamera:Camera3D; private var pool:Pool; public function Renderer(){ m_aDisplayList = new Array(); m_aRenderingList = new Array(); pool = new Pool(); super(); m_nRenderingListCount = 0; m_nDisplayListCount = 0; } public function addToDisplayList(_arg1:IDisplayable):void{ var _local2 = m_nDisplayListCount++; m_aDisplayList[_local2] = _arg1; m_bGlobalRedraw = ((m_bGlobalRedraw) || (_arg1.changed)); } public function render(_arg1:Scene3D):Boolean{ var _local2:Number; var _local3:Number; var _local4:Number; var _local5:Number; var _local6:Number; var _local7:Number; var _local8:Number; var _local9:Number; var _local10:Number; var _local11:Number; var _local12:Number; var _local13:Number; var _local14:Number; var _local15:Number; var _local16:Number; var _local17:Camera3D; var _local18:Number; var _local19:Point3D; var _local20:uint; var _local21:Matrix4; var _local22:Frustum; var _local23:Vertex; var _local24:Array; var _local25:Polygon; var _local26:Number; var _local27:int; var _local28:int; var _local29:int; var _local30:Boolean; var _local31:IDisplayable; var _local32:Shape3D; var _local33:Boolean; var _local34:Sprite2D; _local17 = _arg1.camera; _local18 = _local17.near; _local19 = pool.nextPoint3D; _local20 = 0; _local22 = _local17.frustrum; _local28 = 0; _local30 = _arg1.camera.changed; if ((((m_bGlobalRedraw == false)) && ((_local30 == false)))){ return (false); }; for each (_local31 in m_aRenderingList) { if (_local31){ if ((((_local30 == true)) || ((_local31.changed == true)))){ _local31.clear(); }; }; }; m_nRenderingListCount = 0; m_aRenderingList.length = 0; _local29 = 0; for (;_local29 < m_nDisplayListCount;_local29++) { if ((m_aDisplayList[int(_local29)] is Shape3D)){ _local32 = (m_aDisplayList[int(_local29)] as Shape3D); if ((((_local32.changed == false)) && ((_local30 == false)))){ if (_local32.useSingleContainer){ m_aRenderingList[int(m_nRenderingListCount++)] = _local32; } else { for each (_local25 in _local32.aVisiblePolygons) { m_aRenderingList[int(m_nRenderingListCount++)] = _local25; }; }; continue; }; _local27 = _local32.appearance.flags; _local32.depth = 0; _local32.aVisiblePolygons.length = 0; _local19.reset(_local17.modelMatrix.n14, _local17.modelMatrix.n24, _local17.modelMatrix.n34); _local32.invModelMatrix.Point3DMult(_local19); _local21 = _local32.viewMatrix; _local2 = _local21.n11; _local3 = _local21.n21; _local4 = _local21.n31; _local5 = _local21.n12; _local6 = _local21.n22; _local7 = _local21.n32; _local8 = _local21.n13; _local9 = _local21.n23; _local10 = _local21.n33; _local11 = _local21.n14; _local12 = _local21.n24; _local13 = _local21.n34; _local33 = (((_local32.culled == CullingState.INTERSECT)) && (((_local32.enableClipping) || (_local32.enableNearClipping)))); for each (_local23 in _local32.geometry.aVertex) { _local23.projected = (_local23.transformed = false); }; for each (_local25 in _local32.aPolygons) { if (_local32.animated){ _local25.updateNormal(); }; _local23 = _local25.normal; _local14 = _local25.a.x; _local15 = _local25.a.y; _local16 = _local25.a.z; _local25.visible = ((((_local23.x * (_local19.x - _local14)) + (_local23.y * (_local19.y - _local15))) + (_local23.z * (_local19.z - _local16))) > 0); if (_local32.enableBackFaceCulling){ //unresolved if } else { _local23 = _local25.a; if (_local23.transformed == false){ _local23.wx = ((((_local14 * _local2) + (_local15 * _local5)) + (_local16 * _local8)) + _local11); _local23.wy = ((((_local14 * _local3) + (_local15 * _local6)) + (_local16 * _local9)) + _local12); _local23.wz = ((((_local14 * _local4) + (_local15 * _local7)) + (_local16 * _local10)) + _local13); _local23.transformed = true; }; _local23 = _local25.b; if (_local23.transformed == false){ _local14 = _local23.x; _local15 = _local23.y; _local16 = _local23.z; _local23.wx = ((((_local14 * _local2) + (_local15 * _local5)) + (_local16 * _local8)) + _local11); _local23.wy = ((((_local14 * _local3) + (_local15 * _local6)) + (_local16 * _local9)) + _local12); _local23.wz = ((((_local14 * _local4) + (_local15 * _local7)) + (_local16 * _local10)) + _local13); _local23.transformed = true; }; _local23 = _local25.c; if (_local23){ if (_local23.transformed == false){ _local14 = _local23.x; _local15 = _local23.y; _local16 = _local23.z; _local23.wx = ((((_local14 * _local2) + (_local15 * _local5)) + (_local16 * _local8)) + _local11); _local23.wy = ((((_local14 * _local3) + (_local15 * _local6)) + (_local16 * _local9)) + _local12); _local23.wz = ((((_local14 * _local4) + (_local15 * _local7)) + (_local16 * _local10)) + _local13); _local23.transformed = true; }; }; _local23 = _local25.d; if (_local23){ if (_local23.transformed == false){ _local14 = _local23.x; _local15 = _local23.y; _local16 = _local23.z; _local23.wx = ((((_local14 * _local2) + (_local15 * _local5)) + (_local16 * _local8)) + _local11); _local23.wy = ((((_local14 * _local3) + (_local15 * _local6)) + (_local16 * _local9)) + _local12); _local23.wz = ((((_local14 * _local4) + (_local15 * _local7)) + (_local16 * _local10)) + _local13); _local23.transformed = true; }; }; _local25.precompute(); _local26 = _local25.minZ; if (_local33){ if (_local32.enableClipping){ _local25.clip(_local22); } else { if (((_local32.enableNearClipping) && ((_local26 < _local18)))){ _local25.clipFrontPlane(_local22); } else { if (_local26 < _local18){ continue; }; }; }; } else { if (_local26 < _local18){ continue; }; }; _local24 = (_local25.isClipped) ? _local25.cvertices : _local25.vertices; if (_local24.length > 1){ _local17.projectArray(_local24); if (_local32.enableForcedDepth){ _local25.depth = _local32.forcedDepth; } else { _local32.depth = (_local32.depth + _local25.depth); }; _local28++; _local32.aVisiblePolygons[int(_local32.aVisiblePolygons.length)] = _local25; _local20 = (_local20 | _local27); if (_local32.useSingleContainer == false){ m_aRenderingList[int(m_nRenderingListCount++)] = _local25; }; }; }; }; if (_local32.aVisiblePolygons.length > 0){ if (_local32.useSingleContainer == true){ if (_local32.enableForcedDepth){ _local32.depth = _local32.forcedDepth; } else { _local32.depth = (_local32.depth / _local32.aVisiblePolygons.length); }; m_aRenderingList[int(m_nRenderingListCount++)] = _local32; }; if (((!((_local27 == 0))) || (!((_local20 == 0))))){ if (((_local27 | _local20) & SandyFlags.POLYGON_NORMAL_WORLD)){ _local21 = _local32.modelMatrix; _local2 = _local21.n11; _local3 = _local21.n21; _local4 = _local21.n31; _local5 = _local21.n12; _local6 = _local21.n22; _local7 = _local21.n32; _local8 = _local21.n13; _local9 = _local21.n23; _local10 = _local21.n33; for each (_local25 in _local32.aVisiblePolygons) { _local23 = _local25.normal; _local14 = _local23.x; _local15 = _local23.y; _local16 = _local23.z; _local25.normal.wx = (((_local14 * _local2) + (_local15 * _local5)) + (_local16 * _local8)); _local23.wy = (((_local14 * _local3) + (_local15 * _local6)) + (_local16 * _local9)); _local23.wz = (((_local14 * _local4) + (_local15 * _local7)) + (_local16 * _local10)); }; }; if (((_local27 | _local20) & SandyFlags.VERTEX_NORMAL_WORLD)){ _local21 = _local32.modelMatrix; _local2 = _local21.n11; _local3 = _local21.n21; _local4 = _local21.n31; _local5 = _local21.n12; _local6 = _local21.n22; _local7 = _local21.n32; _local8 = _local21.n13; _local9 = _local21.n23; _local10 = _local21.n33; for each (_local23 in _local32.geometry.aVertexNormals) { _local14 = _local23.x; _local15 = _local23.y; _local16 = _local23.z; _local23.wx = (((_local14 * _local2) + (_local15 * _local5)) + (_local16 * _local8)); _local23.wy = (((_local14 * _local3) + (_local15 * _local6)) + (_local16 * _local9)); _local23.wz = (((_local14 * _local4) + (_local15 * _local7)) + (_local16 * _local10)); }; }; }; }; } else { if ((m_aDisplayList[int(_local29)] is Sprite2D)){ _local34 = (m_aDisplayList[int(_local29)] as Sprite2D); _local34.v.projected = false; _local34.vx.projected = false; _local34.vy.projected = false; _local23 = _local34.v; _local21 = _local34.viewMatrix; _local23.wx = ((((_local23.x * _local21.n11) + (_local23.y * _local21.n12)) + (_local23.z * _local21.n13)) + _local21.n14); _local23.wy = ((((_local23.x * _local21.n21) + (_local23.y * _local21.n22)) + (_local23.z * _local21.n23)) + _local21.n24); _local23.wz = ((((_local23.x * _local21.n31) + (_local23.y * _local21.n32)) + (_local23.z * _local21.n33)) + _local21.n34); _local34.depth = (_local34.enableForcedDepth) ? _local34.forcedDepth : _local23.wz; _local17.projectVertex(_local23); m_aRenderingList[int(m_nRenderingListCount++)] = _local34; _local34.vx.copy(_local23); _local34.vx.wx++; _local17.projectVertex(_local34.vx); _local34.vy.copy(_local23); _local34.vy.wy++; _local17.projectVertex(_local34.vy); } else { if ((m_aDisplayList[int(_local29)] is Renderable)){ (m_aDisplayList[int(_local29)] as Renderable).render(_local17); m_aRenderingList[int(m_nRenderingListCount++)] = (m_aDisplayList[int(_local29)] as Renderable); }; }; }; }; return (true); } public function init():void{ m_nDisplayListCount = 0; m_bGlobalRedraw = false; } public function renderDisplayList(_arg1:Scene3D):void{ var _local2:Sprite; var _local3:IDisplayable; var _local4:int; _local2 = _arg1.container; m_aRenderingList.sortOn("depth", (Array.NUMERIC | Array.DESCENDING)); _local4 = 0; while (_local4 < m_nRenderingListCount) { _local3 = m_aRenderingList[int(_local4)]; if (((_local3.changed) || (_arg1.camera.changed))){ _local3.display(); }; if (_local4 < _local2.numChildren){ if (_local2.getChildAt(_local4) != _local3.container){ _local2.addChildAt(_local3.container, _local4); }; } else { _local2.addChildAt(_local3.container, _local4); }; _local4++; }; } } }//package sandy.core
Section 39
//SandyFlags (sandy.core.SandyFlags) package sandy.core { public final class SandyFlags { public static const VERTEX_NORMAL_WORLD:uint = 2; public static const POLYGON_NORMAL_WORLD:uint = 1; } }//package sandy.core
Section 40
//Scene3D (sandy.core.Scene3D) package sandy.core { import sandy.core.data.*; import flash.display.*; import sandy.core.scenegraph.*; import flash.events.*; import sandy.events.*; import sandy.core.light.*; public class Scene3D extends EventDispatcher { public var renderer:Renderer; public var container:Sprite; private var m_bRectClipped:Boolean;// = false protected var m_sName:String; private var _light:Light3D; protected var m_oRoot:Group; public var camera:Camera3D; private static var _version:String = "3.1"; public function Scene3D(_arg1:String, _arg2:Sprite, _arg3:Camera3D=null, _arg4:Group=null){ renderer = new Renderer(); m_bRectClipped = false; super(); if (_arg1 != null){ if (SceneLocator.getInstance().registerScene(_arg1, this)){ container = _arg2; camera = _arg3; root = _arg4; if (((!((root == null))) && (!((camera == null))))){ if (!camera.hasParent()){ root.addChild(camera); }; }; }; m_sName = _arg1; }; _light = new Light3D(new Point3D(0, 0, 1), 100); } public function set root(_arg1:Group):void{ if (m_oRoot){ m_oRoot.scene = null; m_oRoot = null; }; if (_arg1){ m_oRoot = _arg1; m_oRoot.scene = this; if (!camera.hasParent()){ root.addChild(camera); }; }; } public function get name():String{ return (m_sName); } public function set rectClipping(_arg1:Boolean):void{ m_bRectClipped = _arg1; if (camera){ camera.viewport.hasChanged = true; }; } public function render(_arg1:SandyEvent=null):void{ var _local2:Boolean; if (((((root) && (camera))) && (container))){ Pool.getInstance().init(); renderer.init(); dispatchEvent(new SandyEvent(SandyEvent.SCENE_UPDATE)); root.update(null, false); dispatchEvent(new SandyEvent(SandyEvent.SCENE_CULL)); root.cull(camera.frustrum, camera.invModelMatrix, camera.changed); dispatchEvent(new SandyEvent(SandyEvent.SCENE_RENDER)); _local2 = renderer.render(this); dispatchEvent(new SandyEvent(SandyEvent.SCENE_RENDER_DISPLAYLIST)); if (_local2){ renderer.renderDisplayList(this); }; dispatchEvent(new SandyEvent(SandyEvent.SCENE_RENDER_FINISH)); }; } public function get light():Light3D{ return (_light); } public function get root():Group{ return (m_oRoot); } public function dispose():Boolean{ SceneLocator.getInstance().unregisterScene(m_sName); if (root){ root.destroy(); root = null; }; if (camera){ camera = null; }; if (_light){ _light = null; }; return (true); } public function get rectClipping():Boolean{ return (m_bRectClipped); } public function set light(_arg1:Light3D):void{ if (_light){ _light.destroy(); }; _light = _arg1; dispatchEvent(new SandyEvent(SandyEvent.LIGHT_ADDED)); } public static function getVersion():String{ return (_version); } } }//package sandy.core
Section 41
//SceneLocator (sandy.core.SceneLocator) package sandy.core { import flash.utils.*; public class SceneLocator { private var _m:Dictionary; private static var _oI:SceneLocator; public function SceneLocator(_arg1:PrivateConstructorAccess){ _m = new Dictionary(true); } public function unregisterScene(_arg1:String):void{ _m[_arg1] = null; } public function getScene(_arg1:String):Scene3D{ if (!isRegistered(_arg1)){ trace(((("Can't locate scene instance with '" + _arg1) + "' name in ") + this)); }; return ((_m[_arg1] as Scene3D)); } public function registerScene(_arg1:String, _arg2:Scene3D):Boolean{ if (isRegistered(_arg1)){ trace(((("scene instance is already registered with '" + _arg1) + "' name in ") + this)); return (false); }; _m[_arg1] = _arg2; return (true); } public function isRegistered(_arg1:String):Boolean{ return (!((_m[_arg1] == null))); } public static function getInstance():SceneLocator{ if (!_oI){ _oI = new SceneLocator(new PrivateConstructorAccess()); }; return (_oI); } } }//package sandy.core final class PrivateConstructorAccess { private function PrivateConstructorAccess(){ } }
Section 42
//BubbleEvent (sandy.events.BubbleEvent) package sandy.events { import flash.events.*; public class BubbleEvent extends Event { private var m_oTarget:Object; public function BubbleEvent(_arg1:String, _arg2:Object){ super(_arg1, true, true); m_oTarget = _arg2; } override public function toString():String{ return ("BubbleEvent"); } public function get object():Object{ return (m_oTarget); } } }//package sandy.events
Section 43
//BubbleEventBroadcaster (sandy.events.BubbleEventBroadcaster) package sandy.events { import flash.events.*; public final class BubbleEventBroadcaster extends EventBroadcaster { private var m_oParent:BubbleEventBroadcaster;// = null private var m_oTarget:Object; public function BubbleEventBroadcaster(_arg1:Object){ m_oParent = null; super(); m_oTarget = _arg1; } override public function dispatchEvent(_arg1:Event):Boolean{ if ((_arg1 is BubbleEvent)){ super.dispatchEvent(_arg1); if (parent){ parent.dispatchEvent(_arg1); }; } else { super.dispatchEvent(_arg1); }; return (true); } public function addChild(_arg1:BubbleEventBroadcaster):void{ _arg1.parent = this; } public function get target():Object{ return (m_oTarget); } public function get parent():BubbleEventBroadcaster{ return (m_oParent); } public function set parent(_arg1:BubbleEventBroadcaster):void{ m_oParent = _arg1; } public function removeChild(_arg1:BubbleEventBroadcaster):void{ } } }//package sandy.events
Section 44
//EventBroadcaster (sandy.events.EventBroadcaster) package sandy.events { import flash.events.*; public class EventBroadcaster extends EventDispatcher { override public function dispatchEvent(_arg1:Event):Boolean{ if (((hasEventListener(_arg1.type)) || (_arg1.bubbles))){ return (super.dispatchEvent(_arg1)); }; return (true); } } }//package sandy.events
Section 45
//SandyEvent (sandy.events.SandyEvent) package sandy.events { import flash.events.*; public class SandyEvent extends Event { public static const QUEUE_LOADER_ERROR:String = "queueLoaderError"; public static const SCENE_CULL:String = "scene_cull"; public static const QUEUE_COMPLETE:String = "queueComplete"; public static const SCENE_RENDER:String = "scene_render"; public static const CONTAINER_CREATED:String = "containerCreated"; public static const LIGHT_COLOR_CHANGED:String = "lightColorChanged"; public static const SCENE_RENDER_FINISH:String = "scene_render_finish"; public static const SCENE_RENDER_DISPLAYLIST:String = "scene_render_display_list"; public static const LIGHT_ADDED:String = "lightAdded"; public static const LIGHT_UPDATED:String = "lightUpdated"; public static const SCENE_UPDATE:String = "scene_update"; public function SandyEvent(_arg1:String, _arg2:Boolean=false, _arg3:Boolean=false){ super(_arg1, _arg2, _arg3); } override public function clone():Event{ return (new SandyEvent(type, bubbles, cancelable)); } } }//package sandy.events
Section 46
//Shape3DEvent (sandy.events.Shape3DEvent) package sandy.events { import sandy.core.data.*; import sandy.core.scenegraph.*; import flash.events.*; public class Shape3DEvent extends BubbleEvent { public var point:Point3D; public var shape:Shape3D; public var uv:UVCoord; public var event:Event; public var polygon:Polygon; public function Shape3DEvent(_arg1:String, _arg2:Shape3D, _arg3:Polygon, _arg4:UVCoord, _arg5:Point3D, _arg6:Event){ super(_arg1, _arg2); shape = _arg2; polygon = _arg3; uv = _arg4; point = _arg5; event = _arg6; } } }//package sandy.events
Section 47
//StarFieldRenderEvent (sandy.events.StarFieldRenderEvent) package sandy.events { import flash.display.*; import sandy.core.scenegraph.*; public class StarFieldRenderEvent extends BubbleEvent { public var clear:Boolean; public var bitmapData:BitmapData;// = null public static const AFTER_RENDER:String = "afterRender"; public static const BEFORE_RENDER:String = "beforeRender"; public function StarFieldRenderEvent(_arg1:String, _arg2:StarField, _arg3:BitmapData, _arg4:Boolean){ bitmapData = null; super(_arg1, _arg2); bitmapData = _arg3; clear = _arg4; } } }//package sandy.events
Section 48
//AAttributes (sandy.materials.attributes.AAttributes) package sandy.materials.attributes { import sandy.materials.*; import sandy.core.*; import sandy.core.data.*; import flash.display.*; import sandy.core.scenegraph.*; public class AAttributes implements IAttributes { protected var m_nFlags:uint;// = 0 public function AAttributes(){ m_nFlags = 0; super(); } public function unlink(_arg1:Polygon):void{ } public function draw(_arg1:Graphics, _arg2:Polygon, _arg3:Material, _arg4:Scene3D):void{ } public function get flags():uint{ return (m_nFlags); } public function drawOnSprite(_arg1:Sprite2D, _arg2:Material, _arg3:Scene3D):void{ } public function init(_arg1:Polygon):void{ } public function finish(_arg1:Scene3D):void{ } public function begin(_arg1:Scene3D):void{ } } }//package sandy.materials.attributes
Section 49
//ALightAttributes (sandy.materials.attributes.ALightAttributes) package sandy.materials.attributes { import sandy.materials.*; import sandy.core.*; import sandy.core.data.*; import flash.display.*; import sandy.core.scenegraph.*; import flash.geom.*; import flash.utils.*; public class ALightAttributes implements IAttributes { protected const m_oH:Point3D; private var _gloss:Number;// = 5 private var _scenes:Dictionary; private var _specular:Number;// = 0 private var _diffuse:Number;// = 1 protected var m_oCurrentH:Point3D; protected var m_nI:Number; protected var m_oCurrentL:Point3D; protected var m_oCurrentV:Point3D; protected var m_oL:Point3D; protected var m_nFlags:uint;// = 0 protected var m_oV:Point3D; protected var m_oCurrentShape:Shape3D; private var _ambient:Number;// = 0.3 public function ALightAttributes(){ m_oH = new Point3D(); m_oCurrentL = new Point3D(); m_oCurrentV = new Point3D(); m_oCurrentH = new Point3D(); m_nFlags = 0; _ambient = 0.3; _diffuse = 1; _specular = 0; _gloss = 5; _scenes = new Dictionary(true); super(); } public function set specular(_arg1:Number):void{ _specular = _arg1; onPropertyChange(); } public function get gloss():Number{ return (_gloss); } public function init(_arg1:Polygon):void{ } private function applyColorToDisplayObject(_arg1:DisplayObject, _arg2:uint, _arg3:Number):void{ var _local4:Number; var _local5:Number; var _local6:Number; var _local7:Number; var _local8:ColorTransform; if ((((_arg2 < 1)) || ((_arg2 > 0xFFFFFF)))){ _arg2 = 0xFFFFFF; }; _local4 = ((0xFF0000 & _arg2) >> 16); _local5 = ((0xFF00 & _arg2) >> 8); _local6 = (0xFF & _arg2); _local7 = ((_arg3 * 1.7321) / Math.sqrt((((_local4 * _local4) + (_local5 * _local5)) + (_local6 * _local6)))); _local4 = (_local4 * _local7); _local5 = (_local5 * _local7); _local6 = (_local6 * _local7); _local8 = _arg1.transform.colorTransform; if (((((!((_local8.redMultiplier == _local4))) || (!((_local8.greenMultiplier == _local5))))) || (!((_local8.blueMultiplier == _local6))))){ _local8.redMultiplier = _local4; _local8.greenMultiplier = _local5; _local8.blueMultiplier = _local6; _arg1.transform.colorTransform = _local8; }; } public function unlink(_arg1:Polygon):void{ if (m_oCurrentShape == _arg1.shape){ m_oCurrentShape = null; }; } public function set gloss(_arg1:Number):void{ _gloss = _arg1; onPropertyChange(); } public function get flags():uint{ return (m_nFlags); } public function get ambient():Number{ return (_ambient); } protected function onPropertyChange():void{ } public function begin(_arg1:Scene3D):void{ m_nI = _arg1.light.getNormalizedPower(); m_oL = _arg1.light.getDirectionPoint3D(); m_oV = _arg1.camera.getPosition("absolute"); m_oV.scale(-1); m_oV.normalize(); m_oH.copy(m_oL); m_oH.add(m_oV); m_oH.normalize(); m_oCurrentShape = null; m_oCurrentL.copy(m_oL); m_oCurrentV.copy(m_oV); m_oCurrentH.copy(m_oH); } public function finish(_arg1:Scene3D):void{ } public function set ambient(_arg1:Number):void{ _ambient = _arg1; onPropertyChange(); } public function get specular():Number{ return (_specular); } public function set diffuse(_arg1:Number):void{ _diffuse = _arg1; onPropertyChange(); } public function draw(_arg1:Graphics, _arg2:Polygon, _arg3:Material, _arg4:Scene3D):void{ var _local5:Matrix4; if (_arg3.lightingEnable){ applyColorToDisplayObject((_arg2.shape.useSingleContainer) ? _arg2.shape.container : _arg2.container, _arg4.light.color, 1); if (m_oCurrentShape != _arg2.shape){ m_oCurrentShape = _arg2.shape; _local5 = m_oCurrentShape.invModelMatrix; if (m_oL){ m_oCurrentL.copy(m_oL); _local5.Point3DMult3x3(m_oCurrentL); }; if (m_oV){ m_oCurrentV.copy(m_oV); _local5.Point3DMult3x3(m_oCurrentV); }; if (m_oH){ m_oCurrentH.copy(m_oH); _local5.Point3DMult3x3(m_oCurrentH); }; }; }; } public function get diffuse():Number{ return (_diffuse); } protected function calculate(_arg1:Point3D, _arg2:Boolean, _arg3:Boolean=false):Number{ var _local4:Number; var _local5:Number; var _local6:Number; _local4 = (_arg2) ? -1 : 1; _local5 = (_local4 * m_oCurrentL.dot(_arg1)); if (_local5 < 0){ _local5 = 0; }; _local5 = (_ambient + (_diffuse * _local5)); if (((!(_arg3)) && ((specular > 0)))){ _local6 = (_local4 * m_oCurrentH.dot(_arg1)); if (_local6 < 0){ _local6 = 0; }; _local5 = (_local5 + (_specular * Math.pow(_local6, _gloss))); }; return ((_local5 * m_nI)); } public function drawOnSprite(_arg1:Sprite2D, _arg2:Material, _arg3:Scene3D):void{ if (_arg2.lightingEnable){ applyColorToDisplayObject(_arg1.container, _arg3.light.color, (ambient * _arg3.light.getNormalizedPower())); }; } } }//package sandy.materials.attributes
Section 50
//IAttributes (sandy.materials.attributes.IAttributes) package sandy.materials.attributes { import sandy.materials.*; import sandy.core.*; import sandy.core.data.*; import flash.display.*; import sandy.core.scenegraph.*; public interface IAttributes { function init(_arg1:Polygon):void; function unlink(_arg1:Polygon):void; function draw(_arg1:Graphics, _arg2:Polygon, _arg3:Material, _arg4:Scene3D):void; function drawOnSprite(_arg1:Sprite2D, _arg2:Material, _arg3:Scene3D):void; function begin(_arg1:Scene3D):void; function finish(_arg1:Scene3D):void; function get flags():uint; } }//package sandy.materials.attributes
Section 51
//LightAttributes (sandy.materials.attributes.LightAttributes) package sandy.materials.attributes { import sandy.materials.*; import sandy.core.*; import sandy.core.data.*; import flash.display.*; public final class LightAttributes extends ALightAttributes { public var useBright:Boolean;// = false public function LightAttributes(_arg1:Boolean=false, _arg2:Number=0.3){ useBright = false; super(); useBright = _arg1; ambient = Math.min(Math.max(_arg2, 0), 1); } override public function draw(_arg1:Graphics, _arg2:Polygon, _arg3:Material, _arg4:Scene3D):void{ var _local5:Array; var _local6:Point3D; var _local7:Number; var _local8:Vertex; super.draw(_arg1, _arg2, _arg3, _arg4); if (_arg3.lightingEnable){ _local5 = (_arg2.isClipped) ? _arg2.cvertices : _arg2.vertices; _local6 = _arg2.normal.getPoint3D(); _local7 = calculate(_local6, _arg2.visible); if (_local7 > 1){ _local7 = 1; } else { if (_local7 < ambient){ _local7 = ambient; }; }; _arg1.lineStyle(); if (useBright){ _arg1.beginFill(((_local7)<0.5) ? 0 : 0xFFFFFF, ((_local7)<0.5) ? (1 - (2 * _local7)) : ((2 * _local7) - 1)); } else { _arg1.beginFill(0, (1 - _local7)); }; _arg1.moveTo(Vertex(_local5[0]).sx, Vertex(_local5[0]).sy); for each (_local8 in _local5) { _arg1.lineTo(_local8.sx, _local8.sy); }; _arg1.endFill(); _local6 = null; _local8 = null; }; } } }//package sandy.materials.attributes
Section 52
//LineAttributes (sandy.materials.attributes.LineAttributes) package sandy.materials.attributes { import sandy.materials.*; import sandy.core.*; import sandy.core.data.*; import flash.display.*; public class LineAttributes extends AAttributes { public var modified:Boolean; private var m_nAlpha:Number; private var m_nColor:Number; private var m_nThickness:Number; public function LineAttributes(_arg1:uint=1, _arg2:uint=0, _arg3:Number=1){ m_nThickness = _arg1; m_nAlpha = _arg3; m_nColor = _arg2; modified = true; } public function set color(_arg1:Number):void{ m_nColor = _arg1; modified = true; } override public function draw(_arg1:Graphics, _arg2:Polygon, _arg3:Material, _arg4:Scene3D):void{ var _local5:Array; var _local6:Vertex; var _local7:int; _local5 = (_arg2.isClipped) ? _arg2.cvertices : _arg2.vertices; _arg1.lineStyle(m_nThickness, m_nColor, m_nAlpha); _arg1.moveTo(_local5[0].sx, _local5[0].sy); _local7 = _local5.length; while ((_local6 = _local5[--_local7])) { _arg1.lineTo(_local6.sx, _local6.sy); }; } public function get alpha():Number{ return (m_nAlpha); } public function get color():Number{ return (m_nColor); } public function get thickness():Number{ return (m_nThickness); } public function set thickness(_arg1:Number):void{ m_nThickness = _arg1; modified = true; } public function set alpha(_arg1:Number):void{ m_nAlpha = _arg1; modified = true; } } }//package sandy.materials.attributes
Section 53
//MaterialAttributes (sandy.materials.attributes.MaterialAttributes) package sandy.materials.attributes { import sandy.materials.*; import sandy.core.*; import sandy.core.data.*; import flash.display.*; import sandy.core.scenegraph.*; public class MaterialAttributes { public var attributes:Array; public function MaterialAttributes(... _args){ var _local2:int; attributes = new Array(); super(); _local2 = 0; while (_local2 < _args.length) { if ((_args[_local2] is IAttributes)){ attributes.push(_args[_local2]); }; _local2++; }; } public function unlink(_arg1:Polygon):void{ var _local2:IAttributes; for each (_local2 in attributes) { _local2.unlink(_arg1); }; } public function draw(_arg1:Graphics, _arg2:Polygon, _arg3:Material, _arg4:Scene3D):void{ var _local5:IAttributes; for each (_local5 in attributes) { _local5.draw(_arg1, _arg2, _arg3, _arg4); }; } public function drawOnSprite(_arg1:Sprite2D, _arg2:Material, _arg3:Scene3D):void{ var _local4:IAttributes; for each (_local4 in attributes) { _local4.drawOnSprite(_arg1, _arg2, _arg3); }; } public function begin(_arg1:Scene3D):void{ var _local2:IAttributes; for each (_local2 in attributes) { _local2.begin(_arg1); }; } public function init(_arg1:Polygon):void{ var _local2:IAttributes; for each (_local2 in attributes) { _local2.init(_arg1); }; } public function finish(_arg1:Scene3D):void{ var _local2:IAttributes; for each (_local2 in attributes) { _local2.finish(_arg1); }; } public function get flags():uint{ var _local1:uint; var _local2:IAttributes; _local1 = 0; for each (_local2 in attributes) { _local1 = (_local1 | _local2.flags); }; return (_local1); } } }//package sandy.materials.attributes
Section 54
//Appearance (sandy.materials.Appearance) package sandy.materials { public class Appearance { private var m_oBackMaterial:Material; private var m_oFrontMaterial:Material; public function Appearance(_arg1:Material=null, _arg2:Material=null){ m_oFrontMaterial = ((_arg1)!=null) ? _arg1 : new ColorMaterial(); m_oBackMaterial = ((_arg2)!=null) ? _arg2 : m_oFrontMaterial; } public function set frontMaterial(_arg1:Material):void{ m_oFrontMaterial = _arg1; if (m_oBackMaterial == null){ m_oBackMaterial = _arg1; }; } public function get flags():uint{ var _local1:uint; _local1 = m_oFrontMaterial.flags; if (m_oFrontMaterial != m_oBackMaterial){ _local1 = (_local1 | m_oBackMaterial.flags); }; return (_local1); } public function toString():String{ return ("sandy.materials.Appearance"); } public function get frontMaterial():Material{ return (m_oFrontMaterial); } public function get useVertexNormal():Boolean{ return (Boolean(((m_oBackMaterial.useVertexNormal) && (m_oFrontMaterial.useVertexNormal)))); } public function get backMaterial():Material{ return (m_oBackMaterial); } public function set backMaterial(_arg1:Material):void{ m_oBackMaterial = _arg1; if (m_oFrontMaterial == null){ m_oFrontMaterial = _arg1; }; } } }//package sandy.materials
Section 55
//BitmapMaterial (sandy.materials.BitmapMaterial) package sandy.materials { import sandy.materials.attributes.*; import sandy.core.*; import sandy.core.data.*; import flash.display.*; import flash.geom.*; import flash.utils.*; import sandy.util.*; public class BitmapMaterial extends Material implements IAlphaMaterial { protected const m_oOffset:Point; protected const m_oTiling:Point; public var precision:uint;// = 0 private var m_nWidth:Number; var graphics:Graphics; protected var m_oPolygonMatrixMap:Dictionary; private var m_nInvWidth:Number; private var m_nRecLevel:int;// = 0 private var m_oDrawMatrix:Matrix; public var forceUpdate:Boolean;// = false public var smooth:Boolean;// = false private var m_oTextureClone:BitmapData; protected var m_oTexture:BitmapData; private var m_oColorTransform:ColorTransform; private var m_nAlpha:Number;// = 1 private var m_nInvHeight:Number; protected var matrix:Matrix; public var maxRecurssionDepth:uint;// = 5 var polygon:Polygon; private var m_nHeight:Number; var map:Matrix; protected var m_oPoint:Point; public function BitmapMaterial(_arg1:BitmapData=null, _arg2:MaterialAttributes=null, _arg3:uint=0){ smooth = false; precision = 0; maxRecurssionDepth = 5; m_oDrawMatrix = new Matrix(); m_oColorTransform = new ColorTransform(); map = new Matrix(); m_nAlpha = 1; m_nRecLevel = 0; m_oPoint = new Point(); matrix = new Matrix(); m_oTiling = new Point(1, 1); m_oOffset = new Point(0, 0); forceUpdate = false; super(_arg2); m_oType = MaterialType.BITMAP; texture = _arg1; m_oPolygonMatrixMap = new Dictionary(true); precision = _arg3; } override public function init(_arg1:Polygon):void{ var _local2:Matrix; var _local3:Array; if (_arg1.vertices.length >= 3){ _local2 = null; if ((((m_nWidth > 0)) && ((m_nHeight > 0)))){ _local3 = _arg1.aUVCoord; if (_local3){ _local2 = _createTextureMatrix(_local3[0].u, _local3[0].v, _local3[int(1)].u, _local3[int(1)].v, _local3[int(2)].u, _local3[int(2)].v); }; }; m_oPolygonMatrixMap[_arg1.id] = _local2; }; super.init(_arg1); } override public function unlink(_arg1:Polygon):void{ if (m_oPolygonMatrixMap[_arg1.id]){ delete m_oPolygonMatrixMap[_arg1.id]; }; super.unlink(_arg1); } protected function renderRec(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:Number, _arg7:Number, _arg8:Number, _arg9:Number, _arg10:Number, _arg11:Number, _arg12:Number, _arg13:Number, _arg14:Number, _arg15:Number):void{ var _local16:Number; var _local17:Number; var _local18:Number; var _local19:Number; var _local20:Number; var _local21:Number; var _local22:Number; var _local23:Number; var _local24:Number; var _local25:Number; var _local26:Number; var _local27:Number; var _local28:Number; var _local29:Number; var _local30:Number; var _local31:Number; var _local32:Number; var _local33:Number; var _local34:Number; var _local35:Number; var _local36:Number; var _local37:Number; var _local38:Number; var _local39:Number; var _local40:Number; var _local41:Number; var _local42:Number; var _local43:Number; var _local44:Number; var _local45:Number; var _local46:Number; var _local47:Number; var _local48:Number; var _local49:Number; m_nRecLevel++; _local16 = (_arg1 + _arg1); _local17 = (_arg2 + _arg2); _local18 = (_arg3 + _arg3); _local19 = (_arg4 + _arg4); _local20 = (_arg5 + _arg5); _local21 = (_arg6 + _arg6); _local22 = (2 / (_arg9 + _arg12)); _local23 = (2 / (_arg12 + _arg15)); _local24 = (2 / (_arg15 + _arg9)); _local25 = (((_arg7 * _arg9) + (_arg10 * _arg12)) * _local22); _local26 = (((_arg8 * _arg9) + (_arg11 * _arg12)) * _local22); _local27 = (((_arg10 * _arg12) + (_arg13 * _arg15)) * _local23); _local28 = (((_arg11 * _arg12) + (_arg14 * _arg15)) * _local23); _local29 = (((_arg13 * _arg15) + (_arg7 * _arg9)) * _local24); _local30 = (((_arg14 * _arg15) + (_arg8 * _arg9)) * _local24); _local31 = ((_arg7 + _arg10) - _local25); _local32 = ((_arg8 + _arg11) - _local26); _local33 = ((_arg10 + _arg13) - _local27); _local34 = ((_arg11 + _arg14) - _local28); _local35 = ((_arg13 + _arg7) - _local29); _local36 = ((_arg14 + _arg8) - _local30); _local37 = ((_local31 * _local31) + (_local32 * _local32)); _local38 = ((_local33 * _local33) + (_local34 * _local34)); _local39 = ((_local35 * _local35) + (_local36 * _local36)); _local40 = (_local25 * 0.5); _local41 = (_local26 * 0.5); _local42 = ((_arg9 + _arg12) * 0.5); _local43 = (_local29 * 0.5); _local44 = (_local30 * 0.5); _local45 = ((_arg15 + _arg9) * 0.5); _local46 = (_local27 * 0.5); _local47 = (_local28 * 0.5); _local48 = ((_arg12 + _arg15) * 0.5); if ((((m_nRecLevel > maxRecurssionDepth)) || ((((((_local37 <= precision)) && ((_local39 <= precision)))) && ((_local38 <= precision)))))){ renderTriangle(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7, _arg8, _arg10, _arg11, _arg13, _arg14); m_nRecLevel--; return; }; if ((((((_local37 > precision)) && ((_local39 > precision)))) && ((_local38 > precision)))){ renderRec(_local16, _local17, _local18, _local19, _local20, _local21, _arg7, _arg8, _arg9, _local40, _local41, _local42, _local43, _local44, _local45); renderRec(_local16, _local17, _local18, _local19, (_local20 - 1), _local21, _local40, _local41, _local42, _arg10, _arg11, _arg12, _local46, _local47, _local48); renderRec(_local16, _local17, _local18, _local19, _local20, (_local21 - 1), _local43, _local44, _local45, _local46, _local47, _local48, _arg13, _arg14, _arg15); renderRec(-(_local16), -(_local17), -(_local18), -(_local19), (-(_local20) + 1), (-(_local21) + 1), _local46, _local47, _local48, _local43, _local44, _local45, _local40, _local41, _local42); m_nRecLevel--; return; }; _local49 = Math.max(_local37, Math.max(_local39, _local38)); if (_local37 == _local49){ renderRec(_local16, _arg2, _local18, _arg4, _local20, _arg6, _arg7, _arg8, _arg9, _local40, _local41, _local42, _arg13, _arg14, _arg15); renderRec((_local16 + _arg2), _arg2, (_local18 + _arg4), _arg4, ((_local20 + _arg6) - 1), _arg6, _local40, _local41, _local42, _arg10, _arg11, _arg12, _arg13, _arg14, _arg15); m_nRecLevel--; return; }; if (_local39 == _local49){ renderRec(_arg1, _local17, _arg3, _local19, _arg5, _local21, _arg7, _arg8, _arg9, _arg10, _arg11, _arg12, _local43, _local44, _local45); renderRec(_arg1, (_local17 + _arg1), _arg3, (_local19 + _arg3), _arg5, ((_local21 + _arg5) - 1), _local43, _local44, _local45, _arg10, _arg11, _arg12, _arg13, _arg14, _arg15); m_nRecLevel--; return; }; renderRec((_arg1 - _arg2), _local17, (_arg3 - _arg4), _local19, (_arg5 - _arg6), _local21, _arg7, _arg8, _arg9, _arg10, _arg11, _arg12, _local46, _local47, _local48); renderRec(_local16, (_arg2 - _arg1), _local18, (_arg4 - _arg3), _local20, (_arg6 - _arg5), _arg7, _arg8, _arg9, _local46, _local47, _local48, _arg13, _arg14, _arg15); m_nRecLevel--; } public function get texture():BitmapData{ return (m_oTexture); } public function set texture(_arg1:BitmapData):void{ var _local2:Boolean; var _local3:String; var _local4:Polygon; if (_arg1 == m_oTexture){ return; }; if (m_oTexture){ m_oTexture.dispose(); }; _local2 = false; if (m_nHeight != _arg1.height){ _local2 = true; } else { if (m_nWidth != _arg1.width){ _local2 = true; }; }; m_oTexture = _arg1; m_nHeight = m_oTexture.height; m_nWidth = m_oTexture.width; m_nInvHeight = (1 / m_nHeight); m_nInvWidth = (1 / m_nWidth); if (_local2){ for (_local3 in m_oPolygonMatrixMap) { _local4 = Polygon.POLYGON_MAP[_local3]; init(_local4); }; }; } public function set alpha(_arg1:Number):void{ setTransparency(_arg1); m_bModified = true; } protected function renderTriangle(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:Number, _arg7:Number, _arg8:Number, _arg9:Number, _arg10:Number, _arg11:Number, _arg12:Number):void{ var _local13:Number; var _local14:Number; var _local15:Number; var _local16:Number; var _local17:Number; _local13 = (_arg9 - _arg7); _local14 = (_arg10 - _arg8); _local15 = (_arg11 - _arg7); _local16 = (_arg12 - _arg8); matrix.a = ((_arg1 * _local13) + (_arg2 * _local15)); matrix.b = ((_arg1 * _local14) + (_arg2 * _local16)); matrix.c = ((_arg3 * _local13) + (_arg4 * _local15)); matrix.d = ((_arg3 * _local14) + (_arg4 * _local16)); matrix.tx = (((_arg5 * _local13) + (_arg6 * _local15)) + _arg7); matrix.ty = (((_arg5 * _local14) + (_arg6 * _local16)) + _arg8); _local17 = (((_arg7 * (_local16 - _local14)) - (_arg9 * _local16)) + (_arg11 * _local14)); if (_local17 < 0){ _local17 = -(_local17); }; graphics.lineStyle(); graphics.beginBitmapFill(((m_nAlpha)==1) ? m_oTexture : m_oTextureClone, matrix, repeat, ((smooth) && ((_local17 > 100)))); graphics.moveTo(_arg7, _arg8); graphics.lineTo(_arg9, _arg10); graphics.lineTo(_arg11, _arg12); graphics.endFill(); } override public function renderPolygon(_arg1:Scene3D, _arg2:Polygon, _arg3:Sprite):void{ var _local4:Array; var _local5:Array; var _local6:Vertex; var _local7:Vertex; var _local8:Vertex; var _local9:int; var _local10:int; if (m_oTexture == null){ return; }; polygon = _arg2; graphics = _arg3.graphics; m_nRecLevel = 0; if (((polygon.isClipped) || ((polygon.vertices.length > 3)))){ _local4 = (polygon.isClipped) ? _arg2.cvertices : _arg2.vertices; _local5 = (polygon.isClipped) ? _arg2.caUVCoord : _arg2.aUVCoord; _local10 = (_local4.length - 1); _local9 = 1; while (_local9 < _local10) { map = _createTextureMatrix(_local5[0].u, _local5[0].v, _local5[int(_local9)].u, _local5[int(_local9)].v, _local5[int((_local9 + 1))].u, _local5[int((_local9 + 1))].v); _local6 = _local4[0]; _local7 = _local4[int(_local9)]; _local8 = _local4[int((_local9 + 1))]; if (precision == 0){ renderTriangle(map.a, map.b, map.c, map.d, map.tx, map.ty, _local6.sx, _local6.sy, _local7.sx, _local7.sy, _local8.sx, _local8.sy); } else { renderRec(map.a, map.b, map.c, map.d, map.tx, map.ty, _local6.sx, _local6.sy, _local6.wz, _local7.sx, _local7.sy, _local7.wz, _local8.sx, _local8.sy, _local8.wz); }; _local9++; }; } else { _local4 = _arg2.vertices; _local5 = _arg2.aUVCoord; map = (m_oPolygonMatrixMap[polygon.id] as Matrix); _local6 = _local4[0]; _local7 = _local4[1]; _local8 = _local4[2]; if (precision == 0){ renderTriangle(map.a, map.b, map.c, map.d, map.tx, map.ty, _local6.sx, _local6.sy, _local7.sx, _local7.sy, _local8.sx, _local8.sy); } else { renderRec(map.a, map.b, map.c, map.d, map.tx, map.ty, _local6.sx, _local6.sy, _local6.wz, _local7.sx, _local7.sy, _local7.wz, _local8.sx, _local8.sy, _local8.wz); }; }; if (attributes){ attributes.draw(graphics, polygon, this, _arg1); }; _local4 = null; _local5 = null; } public function setTransparency(_arg1:Number):void{ if (m_oTexture == null){ throw (new Error("Setting transparency requires setting texture first.")); }; _arg1 = NumberUtil.constrain(_arg1, 0, 1); m_nAlpha = _arg1; if (_arg1 == 1){ return; }; if (m_oTextureClone != null){ if (((!((m_oTextureClone.height == m_oTexture.height))) || (!((m_oTextureClone.width == m_oTexture.width))))){ m_oTextureClone.dispose(); m_oTextureClone = null; }; }; if (m_oTextureClone == null){ m_oTextureClone = new BitmapData(m_oTexture.width, m_oTexture.height, true, 0); }; m_oColorTransform.alphaMultiplier = _arg1; m_oTextureClone.lock(); m_oTextureClone.fillRect(m_oTextureClone.rect, 0); m_oTextureClone.draw(m_oTexture, m_oDrawMatrix, m_oColorTransform); m_oTextureClone.unlock(); } protected function _createTextureMatrix(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:Number):Matrix{ var _local7:Number; var _local8:Number; var _local9:Number; var _local10:Number; var _local11:Number; var _local12:Number; var _local13:Matrix; _local7 = (((_arg1 * m_oTiling.x) + m_oOffset.x) * m_nWidth); _local8 = (((_arg2 * m_oTiling.y) + m_oOffset.y) * m_nHeight); _local9 = (((_arg3 * m_oTiling.x) + m_oOffset.x) * m_nWidth); _local10 = (((_arg4 * m_oTiling.y) + m_oOffset.y) * m_nHeight); _local11 = (((_arg5 * m_oTiling.x) + m_oOffset.x) * m_nWidth); _local12 = (((_arg6 * m_oTiling.y) + m_oOffset.y) * m_nHeight); if ((((((_local7 == _local9)) && ((_local8 == _local10)))) || ((((_local7 == _local11)) && ((_local8 == _local12)))))){ _local7 = (_local7 - ((_local7)>0.05) ? 0.05 : -0.05); _local8 = (_local8 - ((_local8)>0.07) ? 0.07 : -0.07); }; if ((((_local11 == _local9)) && ((_local12 == _local10)))){ _local11 = (_local11 - ((_local11)>0.05) ? 0.04 : -0.04); _local12 = (_local12 - ((_local12)>0.06) ? 0.06 : -0.06); }; _local13 = new Matrix((_local9 - _local7), (_local10 - _local8), (_local11 - _local7), (_local12 - _local8), _local7, _local8); _local13.invert(); return (_local13); } public function get alpha():Number{ return (m_nAlpha); } public function toString():String{ return ("sandy.materials.BitmapMaterial"); } public function setTiling(_arg1:Number, _arg2:Number, _arg3:Number=0, _arg4:Number=0):void{ var _local5:String; var _local6:Polygon; m_oTiling.x = _arg1; m_oTiling.y = _arg2; m_oOffset.x = (_arg3 - Math.floor(_arg3)); m_oOffset.y = (_arg4 - Math.floor(_arg4)); for (_local5 in m_oPolygonMatrixMap) { _local6 = Polygon.POLYGON_MAP[_local5]; init(_local6); }; } } }//package sandy.materials
Section 56
//ColorMaterial (sandy.materials.ColorMaterial) package sandy.materials { import sandy.materials.attributes.*; import sandy.core.*; import sandy.core.data.*; import flash.display.*; public final class ColorMaterial extends Material implements IAlphaMaterial { private var m_nColor:Number; private var m_nAlpha:Number; public function ColorMaterial(_arg1:uint=0, _arg2:Number=1, _arg3:MaterialAttributes=null){ super(_arg3); m_oType = MaterialType.COLOR; m_nColor = _arg1; m_nAlpha = _arg2; } override public function renderPolygon(_arg1:Scene3D, _arg2:Polygon, _arg3:Sprite):void{ var _local4:Array; var _local5:Vertex; var _local6:int; var _local7:Graphics; _local4 = (_arg2.isClipped) ? _arg2.cvertices : _arg2.vertices; if (!_local4.length){ return; }; _local6 = _local4.length; _local7 = _arg3.graphics; _local7.lineStyle(); _local7.beginFill(m_nColor, m_nAlpha); _local7.moveTo(_local4[0].sx, _local4[0].sy); while ((_local5 = _local4[--_local6])) { _local7.lineTo(_local5.sx, _local5.sy); }; _local7.endFill(); if (attributes){ attributes.draw(_local7, _arg2, this, _arg1); }; } public function set color(_arg1:Number):void{ m_nColor = _arg1; m_bModified = true; } public function get color():Number{ return (m_nColor); } public function get alpha():Number{ return (m_nAlpha); } public function set alpha(_arg1:Number):void{ m_nAlpha = _arg1; m_bModified = true; } } }//package sandy.materials
Section 57
//IAlphaMaterial (sandy.materials.IAlphaMaterial) package sandy.materials { public interface IAlphaMaterial { function set alpha(_arg1:Number):void; function get alpha():Number; } }//package sandy.materials
Section 58
//Material (sandy.materials.Material) package sandy.materials { import sandy.materials.attributes.*; import sandy.core.*; import sandy.core.data.*; import flash.display.*; import sandy.core.scenegraph.*; public class Material { protected var m_nFlags:uint;// = 0 public var useVertexNormal:Boolean;// = false public var attributes:MaterialAttributes; public var repeat:Boolean;// = true private var _id:Number; public var lightingEnable:Boolean;// = false protected var _useLight:Boolean;// = false protected var m_oType:MaterialType; protected var m_bModified:Boolean; private var _filters:Array; private static var create:Boolean; private static var _ID_:Number = 0; public function Material(_arg1:MaterialAttributes=null){ useVertexNormal = false; lightingEnable = false; repeat = true; m_nFlags = 0; _useLight = false; super(); _filters = []; _useLight = false; _id = _ID_++; attributes = ((_arg1)==null) ? new MaterialAttributes() : _arg1; m_bModified = true; m_oType = MaterialType.NONE; } public function get filters():Array{ return (_filters); } public function renderPolygon(_arg1:Scene3D, _arg2:Polygon, _arg3:Sprite):void{ if (attributes){ attributes.draw(_arg3.graphics, _arg2, this, _arg1); }; } public function get modified():Boolean{ return (m_bModified); } public function get flags():uint{ var _local1:uint; _local1 = m_nFlags; if (attributes){ _local1 = (_local1 | attributes.flags); }; return (_local1); } public function init(_arg1:Polygon):void{ if (attributes){ attributes.init(_arg1); }; } public function unlink(_arg1:Polygon):void{ if (attributes){ attributes.unlink(_arg1); }; } public function finish(_arg1:Scene3D):void{ if (attributes){ attributes.finish(_arg1); }; } public function get id():Number{ return (_id); } public function begin(_arg1:Scene3D):void{ if (attributes){ attributes.begin(_arg1); }; } public function get type():MaterialType{ return (m_oType); } public function renderSprite(_arg1:Sprite2D, _arg2:Material, _arg3:Scene3D):void{ if (attributes){ attributes.drawOnSprite(_arg1, _arg2, _arg3); }; } public function set filters(_arg1:Array):void{ _filters = _arg1; m_bModified = true; } } }//package sandy.materials
Section 59
//MaterialType (sandy.materials.MaterialType) package sandy.materials { public class MaterialType { private var m_sType:String; public static const COLOR:MaterialType = new MaterialType("color"); ; public static const WIREFRAME:MaterialType = new MaterialType("wireframe"); ; public static const OUTLINE:MaterialType = new MaterialType("outline"); ; public static const BITMAP:MaterialType = new MaterialType("bitmap"); ; public static const NONE:MaterialType = new MaterialType("default"); ; public static const VIDEO:MaterialType = new MaterialType("video"); ; public static const MOVIE:MaterialType = new MaterialType("movie"); ; public function MaterialType(_arg1:String){ m_sType = _arg1; } public function typeString():String{ return (m_sType); } } }//package sandy.materials
Section 60
//MovieMaterial (sandy.materials.MovieMaterial) package sandy.materials { import sandy.materials.attributes.*; import sandy.core.*; import sandy.core.data.*; import flash.display.*; import flash.events.*; import flash.geom.*; import flash.utils.*; import sandy.util.*; import sandy.math.*; public class MovieMaterial extends BitmapMaterial { private var m_bUpdate:Boolean; private var m_oMovie:Sprite; private var m_oTimer:Timer; private var m_oAlpha:ColorTransform; public static const DEFAULT_FILL_COLOR:uint = 0; public function MovieMaterial(_arg1:Sprite, _arg2:uint=40, _arg3:MaterialAttributes=null, _arg4:Boolean=false, _arg5:Number=0, _arg6:Number=0){ var _local7:Number; var _local8:Number; var _local9:BitmapData; var _local10:Rectangle; m_oAlpha = new ColorTransform(); if (_arg4){ _local9 = new BitmapData(_arg1.width, _arg1.height, true, 0); _local9.draw(_arg1); _local10 = _local9.getColorBoundsRect(4278190080, 0, false); _local7 = _local10.width; _local8 = _local10.height; } else { _local7 = (_arg6) ? _arg6 : _arg1.width; _local8 = (_arg5) ? _arg5 : _arg1.height; }; super(new BitmapData(_local7, _local8, true, DEFAULT_FILL_COLOR), _arg3); m_oMovie = _arg1; m_oType = MaterialType.MOVIE; m_bUpdate = true; m_oTimer = new Timer(_arg2); m_oTimer.addEventListener(TimerEvent.TIMER, _update); m_oTimer.start(); if (_local9){ _local9.dispose(); _local9 = null; }; _local10 = null; _local7 = undefined; _local8 = undefined; } public function stop():void{ m_oTimer.stop(); } public function get movie():Sprite{ return (m_oMovie); } override public function renderPolygon(_arg1:Scene3D, _arg2:Polygon, _arg3:Sprite):void{ m_bUpdate = true; super.renderPolygon(_arg1, _arg2, _arg3); } override public function setTransparency(_arg1:Number):void{ m_oAlpha.alphaMultiplier = NumberUtil.constrain(_arg1, 0, 1); } public function start():void{ m_oTimer.start(); } private function _update(_arg1:Event):void{ if (((m_bUpdate) || (forceUpdate))){ m_oTexture.fillRect(m_oTexture.rect, ColorMath.applyAlpha(DEFAULT_FILL_COLOR, m_oAlpha.alphaMultiplier)); m_oTexture.draw(m_oMovie, null, m_oAlpha, null, null, smooth); }; m_bUpdate = false; } } }//package sandy.materials
Section 61
//WireFrameMaterial (sandy.materials.WireFrameMaterial) package sandy.materials { import sandy.materials.attributes.*; import sandy.core.*; import sandy.core.data.*; import flash.display.*; public final class WireFrameMaterial extends Material { public function WireFrameMaterial(_arg1:uint=1, _arg2:uint=0, _arg3:Number=1, _arg4:MaterialAttributes=null){ super(_arg4); m_oType = MaterialType.WIREFRAME; attributes.attributes.push(new LineAttributes(_arg1, _arg2, _arg3)); } override public function renderPolygon(_arg1:Scene3D, _arg2:Polygon, _arg3:Sprite):void{ attributes.draw(_arg3.graphics, _arg2, this, _arg1); } } }//package sandy.materials
Section 62
//ColorMath (sandy.math.ColorMath) package sandy.math { public class ColorMath { public static function applyAlpha(_arg1:uint, _arg2:Number):uint{ var _local3:uint; _local3 = (_arg1 / 16777216); return (((_arg1 & 0xFFFFFF) + (Math.floor((_arg2 * _local3)) * 16777216))); } public static function calculateLitColour(_arg1:Number, _arg2:Number):Number{ var _local3:Number; var _local4:Number; var _local5:Number; var _local6:Number; var _local7:Number; var _local8:Number; var _local9:Number; var _local10:Number; var _local11:Number; var _local12:Number; var _local13:Number; var _local14:Number; var _local15:Array; var _local16:Number; var _local17:Number; var _local18:Number; _local3 = ((_arg1 >> 16) & 0xFF); _local4 = ((_arg1 >> 8) & 0xFF); _local5 = (_arg1 & 0xFF); _local3 = (_local3 * 0.00390625); _local4 = (_local4 * 0.00390625); _local5 = (_local5 * 0.00390625); _local14 = 0; _local15 = [_local3, _local4, _local5]; _local15.sort(); _local6 = _local15[0]; _local7 = _local15[1]; _local8 = _local15[2]; _local16 = (_local8 - _local6); _local10 = ((_local6 + _local8) * 0.5); if (_local10 == 0){ _local11 = 1; } else { _local9 = (_local16 * 0.5); if (_local10 < 0.5){ _local11 = (_local9 / _local10); } else { _local11 = (_local9 / (1 - _local10)); }; if (_local16 != 0){ while (true) { if (_local3 == _local8){ if (_local5 == _local6){ _local14 = 0; } else { _local14 = 5; }; break; }; if (_local4 == _local8){ if (_local5 == _local6){ _local14 = 1; } else { _local14 = 2; }; break; }; if (_local3 == _local6){ _local14 = 3; } else { _local14 = 4; }; break; }; if ((_local14 % 2) == 0){ _local13 = (_local7 - _local6); } else { _local13 = (_local8 - _local7); }; _local13 = (_local13 / _local16); _local12 = (60 * (_local14 + _local13)); }; }; if (_arg2 < 0.5){ _local9 = (_local11 * _arg2); } else { _local9 = (_local11 * (1 - _arg2)); }; _local6 = (_arg2 - _local9); _local8 = (_arg2 + _local9); _local14 = Math.floor((_local12 / 60)); _local13 = (((_local12 - (_local14 * 60)) * _local9) / 30); _local14 = (_local14 % 6); _local17 = (_local6 + _local13); _local18 = (_local8 - _local13); switch (_local14){ case 0: _local3 = _local8; _local4 = _local17; _local5 = _local6; break; case 1: _local3 = _local18; _local4 = _local8; _local5 = _local6; break; case 2: _local3 = _local6; _local4 = _local8; _local5 = _local17; break; case 3: _local3 = _local6; _local4 = _local18; _local5 = _local8; break; case 4: _local3 = _local17; _local4 = _local6; _local5 = _local8; break; case 5: _local3 = _local8; _local4 = _local6; _local5 = _local18; break; }; return (((((_local3 * 0x0100) << 16) | ((_local4 * 0x0100) << 8)) | (_local5 * 0x0100))); } public static function hex2rgb(_arg1:Number):Object{ var _local2:Number; var _local3:Number; var _local4:Number; _local2 = ((0xFF0000 & _arg1) >> 16); _local3 = ((0xFF00 & _arg1) >> 8); _local4 = (0xFF & _arg1); return ({r:_local2, g:_local3, b:_local4}); } public static function rgb2hex(_arg1:Number, _arg2:Number, _arg3:Number):Number{ return ((((_arg1 << 16) | (_arg2 << 8)) | _arg3)); } public static function hex2rgbn(_arg1:Number):Object{ var _local2:Number; var _local3:Number; var _local4:Number; _local2 = ((0xFF0000 & _arg1) >> 16); _local3 = ((0xFF00 & _arg1) >> 8); _local4 = (0xFF & _arg1); return ({r:(_local2 / 0xFF), g:(_local3 / 0xFF), b:(_local4 / 0xFF)}); } } }//package sandy.math
Section 63
//FastMath (sandy.math.FastMath) package sandy.math { public class FastMath { public static const PRECISION_DIV_2PI:Number = 20860.7567009409; public static const HALF_PI:Number = 1.5707963267949; public static const TWO_PI:Number = 6.28318530717959; public static const PRECISION_S:int = 131071; public static const initialized:Boolean = initialize(); public static const PRECISION:int = 131072; private static var RAD_SLICE:Number = 4.79368996214263E-5; private static var tanTable:Array = new Array(PRECISION); private static var sinTable:Array = new Array(PRECISION); public static function tan(_arg1:Number):Number{ return (tanTable[int(radToIndex(_arg1))]); } public static function sin(_arg1:Number):Number{ return (sinTable[int(radToIndex(_arg1))]); } private static function radToIndex(_arg1:Number):int{ return (int(((_arg1 * PRECISION_DIV_2PI) & PRECISION_S))); } public static function cos(_arg1:Number):Number{ return (sinTable[int(radToIndex((HALF_PI - _arg1)))]); } private static function initialize():Boolean{ var _local1:Number; var _local2:int; _local1 = 0; _local2 = 0; while (_local2 < PRECISION) { _local1 = Number((_local2 * RAD_SLICE)); sinTable[_local2] = Number(Math.sin(_local1)); tanTable[_local2] = Number(Math.tan(_local1)); _local2++; }; return (true); } } }//package sandy.math
Section 64
//IntersectionMath (sandy.math.IntersectionMath) package sandy.math { import sandy.core.data.*; import sandy.bounds.*; import flash.geom.*; import sandy.util.*; public final class IntersectionMath { public static function isPointInTriangle2D(_arg1:Point, _arg2:Point, _arg3:Point, _arg4:Point):Boolean{ var _local5:Number; var _local6:Number; var _local7:Number; var _local8:Number; _local5 = (1 / (((_arg2.y - _arg4.y) * (_arg3.x - _arg4.x)) + ((_arg3.y - _arg4.y) * (_arg4.x - _arg2.x)))); _local6 = (_local5 * (((_arg1.y - _arg4.y) * (_arg3.x - _arg4.x)) + ((_arg3.y - _arg4.y) * (_arg4.x - _arg1.x)))); _local7 = (_local5 * (((_arg1.y - _arg2.y) * (_arg4.x - _arg2.x)) + ((_arg4.y - _arg2.y) * (_arg2.x - _arg1.x)))); _local8 = (_local5 * (((_arg1.y - _arg3.y) * (_arg2.x - _arg3.x)) + ((_arg2.y - _arg3.y) * (_arg3.x - _arg1.x)))); return ((((((_local6 > 0)) && ((_local7 > 0)))) && ((_local8 > 0)))); } public static function intersectionLine3D(_arg1:Point3D, _arg2:Point3D, _arg3:Point3D, _arg4:Point3D):Array{ var _local5:Array; var _local6:Number; var _local7:Number; var _local8:Number; var _local9:Number; var _local10:Number; var _local11:Number; var _local12:Number; var _local13:Number; var _local14:Number; var _local15:Number; var _local16:Number; var _local17:Number; var _local18:Number; var _local19:Number; var _local20:Number; var _local21:Number; var _local22:Number; _local5 = [new Point3D((0.5 * (_arg1.x + _arg2.x)), (0.5 * (_arg1.y + _arg2.y)), (0.5 * (_arg1.z + _arg2.z))), new Point3D((0.5 * (_arg3.x + _arg4.x)), (0.5 * (_arg3.y + _arg4.y)), (0.5 * (_arg3.z + _arg4.z)))]; _local6 = (_arg1.x - _arg3.x); _local7 = (_arg1.y - _arg3.y); _local8 = (_arg1.z - _arg3.z); _local9 = (_arg4.x - _arg3.x); _local10 = (_arg4.y - _arg3.y); _local11 = (_arg4.z - _arg3.z); if (((((NumberUtil.isZero(_local9)) && (NumberUtil.isZero(_local10)))) && (NumberUtil.isZero(_local11)))){ return (_local5); }; _local12 = (_arg2.x - _arg1.x); _local13 = (_arg2.y - _arg1.y); _local14 = (_arg2.z - _arg1.z); if (((((NumberUtil.isZero(_local12)) && (NumberUtil.isZero(_local13)))) && (NumberUtil.isZero(_local14)))){ return (_local5); }; _local15 = (((_local6 * _local9) + (_local7 * _local10)) + (_local8 * _local11)); _local16 = (((_local9 * _local12) + (_local10 * _local13)) + (_local11 * _local14)); _local17 = (((_local6 * _local12) + (_local7 * _local13)) + (_local8 * _local14)); _local18 = (((_local9 * _local9) + (_local10 * _local10)) + (_local11 * _local11)); _local19 = (((_local12 * _local12) + (_local13 * _local13)) + (_local14 * _local14)); _local20 = ((_local19 * _local18) - (_local16 * _local16)); if (NumberUtil.isZero(_local20)){ return (_local5); }; _local21 = (((_local15 * _local16) - (_local17 * _local18)) / _local20); _local22 = ((_local15 + (_local16 * _local21)) / _local18); return ([new Point3D((_arg1.x + (_local21 * _local12)), (_arg1.y + (_local21 * _local13)), (_arg1.z + (_local21 * _local14))), new Point3D((_arg3.x + (_local22 * _local9)), (_arg3.y + (_local22 * _local10)), (_arg3.z + (_local22 * _local11)))]); } public static function intersectionBSphere(_arg1:BSphere, _arg2:BSphere):Boolean{ var _local3:Point3D; var _local4:Number; var _local5:Number; _local3 = _arg1.position.clone(); _local3.sub(_arg2.position); _local4 = (_arg1.radius + _arg2.radius); _local5 = _local3.getNorm(); return ((_local5 <= _local4)); } public static function intersectionLine2D(_arg1:Point, _arg2:Point, _arg3:Point, _arg4:Point):Point{ 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; _local5 = _arg1.x; _local6 = _arg1.y; _local7 = _arg2.x; _local8 = _arg2.y; _local9 = _arg3.x; _local10 = _arg3.y; _local11 = _arg4.x; _local12 = _arg4.y; _local13 = (((_local12 - _local10) * (_local7 - _local5)) - ((_local11 - _local9) * (_local8 - _local6))); if (_local13 == 0){ return (null); }; _local14 = (((_local11 - _local9) * (_local6 - _local10)) - ((_local12 - _local10) * (_local5 - _local9))); _local14 = (_local14 / _local13); return (new Point((_local5 + (_local14 * (_local7 - _local5))), (_local6 + (_local14 * (_local8 - _local6))))); } } }//package sandy.math
Section 65
//PlaneMath (sandy.math.PlaneMath) package sandy.math { import sandy.core.data.*; public class PlaneMath { public static const NEGATIVE:int = -1; public static const POSITIVE:int = 1; public static const ON_PLANE:int = 0; public static function distanceToPoint(_arg1:Plane, _arg2:Point3D):Number{ return (((((_arg1.a * _arg2.x) + (_arg1.b * _arg2.y)) + (_arg1.c * _arg2.z)) + _arg1.d)); } public static function classifyPoint(_arg1:Plane, _arg2:Point3D):Number{ var _local3:Number; _local3 = PlaneMath.distanceToPoint(_arg1, _arg2); if (_local3 < 0){ return (PlaneMath.NEGATIVE); }; if (_local3 > 0){ return (PlaneMath.POSITIVE); }; return (PlaneMath.ON_PLANE); } public static function computePlaneFromPoints(_arg1:Point3D, _arg2:Point3D, _arg3:Point3D):Plane{ var _local4:Point3D; var _local5:Number; _local4 = Point3DMath.cross(Point3DMath.sub(_arg1, _arg2), Point3DMath.sub(_arg1, _arg3)); Point3DMath.normalize(_local4); _local5 = Point3DMath.dot(_arg1, _local4); return (new Plane(_local4.x, _local4.y, _local4.z, _local5)); } public static function createFromNormalAndPoint(_arg1:Point3D, _arg2:Number):Plane{ var _local3:Plane; _local3 = new Plane(); Point3DMath.normalize(_arg1); _local3.a = _arg1.x; _local3.b = _arg1.y; _local3.c = _arg1.z; _local3.d = _arg2; PlaneMath.normalizePlane(_local3); return (_local3); } public static function normalizePlane(_arg1:Plane):void{ var _local2:Number; _local2 = Math.sqrt((((_arg1.a * _arg1.a) + (_arg1.b * _arg1.b)) + (_arg1.c * _arg1.c))); _arg1.a = (_arg1.a / _local2); _arg1.b = (_arg1.b / _local2); _arg1.c = (_arg1.c / _local2); _arg1.d = (_arg1.d / _local2); } } }//package sandy.math
Section 66
//Point3DMath (sandy.math.Point3DMath) package sandy.math { import sandy.core.data.*; public class Point3DMath { public static function addPoint3D(_arg1:Point3D, _arg2:Point3D):Point3D{ return (new Point3D((_arg1.x + _arg2.x), (_arg1.y + _arg2.y), (_arg1.z + _arg2.z))); } public static function dot(_arg1:Point3D, _arg2:Point3D):Number{ return ((((_arg1.x * _arg2.x) + (_arg1.y * _arg2.y)) + (_arg2.z * _arg1.z))); } public static function negate(_arg1:Point3D):Point3D{ return (new Point3D(-(_arg1.x), -(_arg1.y), -(_arg1.z))); } public static function clone(_arg1:Point3D):Point3D{ return (new Point3D(_arg1.x, _arg1.y, _arg1.z)); } public static function sub(_arg1:Point3D, _arg2:Point3D):Point3D{ return (new Point3D((_arg1.x - _arg2.x), (_arg1.y - _arg2.y), (_arg1.z - _arg2.z))); } public static function scale(_arg1:Point3D, _arg2:Number):Point3D{ return (new Point3D((_arg1.x * _arg2), (_arg1.y * _arg2), (_arg1.z * _arg2))); } public static function normalize(_arg1:Point3D):Boolean{ var _local2:Number; _local2 = Point3DMath.getNorm(_arg1); if ((((_local2 == 0)) || ((_local2 == 1)))){ return (false); }; _arg1.x = (_arg1.x / _local2); _arg1.y = (_arg1.y / _local2); _arg1.z = (_arg1.z / _local2); return (true); } public static function cross(_arg1:Point3D, _arg2:Point3D):Point3D{ return (new Point3D(((_arg1.y * _arg2.z) - (_arg1.z * _arg2.y)), ((_arg1.z * _arg2.x) - (_arg1.x * _arg2.z)), ((_arg1.x * _arg2.y) - (_arg1.y * _arg2.x)))); } public static function sphrand(_arg1:Number, _arg2:Number):Point3D{ var _local3:Point3D; var _local4:Number; _local3 = new Point3D((Math.random() - 0.5), (Math.random() - 0.5), (Math.random() - 0.5)); _local3.normalize(); _local4 = Math.random(); _local4 = (((_arg2 - _arg1) * _local4) + _arg1); _local3.scale(_local4); return (_local3); } public static function getNorm(_arg1:Point3D):Number{ return (Math.sqrt((((_arg1.x * _arg1.x) + (_arg1.y * _arg1.y)) + (_arg1.z * _arg1.z)))); } public static function pow(_arg1:Point3D, _arg2:Number):Point3D{ return (new Point3D(Math.pow(_arg1.x, _arg2), Math.pow(_arg1.y, _arg2), Math.pow(_arg1.z, _arg2))); } public static function getAngle(_arg1:Point3D, _arg2:Point3D):Number{ var _local3:Number; var _local4:Number; _local3 = (Point3DMath.dot(_arg1, _arg2) / (Point3DMath.getNorm(_arg1) * Point3DMath.getNorm(_arg2))); _local4 = (1 - (_local3 * _local3)); if (_local4 < 0){ trace((" wrong " + _local3)); _local4 = 0; }; return (Math.atan2(Math.sqrt(_local4), _local3)); } } }//package sandy.math
Section 67
//Box (sandy.primitive.Box) package sandy.primitive { import sandy.core.data.*; import sandy.core.scenegraph.*; public class Box extends Shape3D implements Primitive3D { private var _h:Number; private var _q:Number; private var _lg:Number; private var _mode:String; private var _radius:Number; private var m_aFaces:Array; public static const FACE_RIGHT:uint = 5; public static const FACE_FRONT:uint = 1; public static const FACE_LEFT:uint = 4; public static const FACE_BOTTOM:uint = 2; public static const FACE_BACK:uint = 0; public static const FACE_TOP:uint = 3; public function Box(_arg1:String=null, _arg2:Number=6, _arg3:Number=6, _arg4:Number=6, _arg5:String="tri", _arg6:Number=1){ super(_arg1); _h = _arg3; _lg = _arg4; _radius = _arg2; _q = ((((_arg6 <= 0)) || ((_arg6 > 10)))) ? 1 : _arg6; _mode = (((!((_arg5 == "tri"))) && (!((_arg5 == "quad"))))) ? "tri" : _arg5; geometry = generate(); _generateFaces(); } private function __tesselate(_arg1:Geometry3D, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:Number, _arg7:Number, _arg8:Number, _arg9:Number, _arg10:Number):void{ var _local11:Geometry3D; var _local12:Polygon; var _local13:Vertex; var _local14:Vertex; var _local15:Vertex; var _local16:Vertex; var _local17:Number; var _local18:Number; var _local19:Number; var _local20:Number; var _local21:Number; var _local22:UVCoord; var _local23:UVCoord; var _local24:UVCoord; var _local25:UVCoord; _local11 = _arg1; if (_arg10 == 0){ if (_mode == "tri"){ _local11.setFaceVertexIds(_local11.getNextFaceID(), _arg2, _arg3, _arg5); _local11.setFaceUVCoordsIds(_local11.getNextFaceUVCoordID(), _arg6, _arg7, _arg9); _local11.setFaceVertexIds(_local11.getNextFaceID(), _arg4, _arg5, _arg3); _local11.setFaceUVCoordsIds(_local11.getNextFaceUVCoordID(), _arg8, _arg9, _arg7); } else { if (_mode == "quad"){ _local11.setFaceVertexIds(_local11.getNextFaceID(), _arg2, _arg3, _arg4, _arg5); _local11.setFaceUVCoordsIds(_local11.getNextFaceUVCoordID(), _arg6, _arg7, _arg8, _arg9); }; }; } else { _local13 = _local11.aVertex[_arg2]; _local14 = _local11.aVertex[_arg3]; _local15 = _local11.aVertex[_arg4]; _local16 = _local11.aVertex[_arg5]; _local17 = _local11.getNextVertexID(); _local11.setVertex(_local17, ((_local13.x + _local14.x) / 2), ((_local13.y + _local14.y) / 2), ((_local13.z + _local14.z) / 2)); _local18 = _local11.getNextVertexID(); _local11.setVertex(_local18, ((_local14.x + _local15.x) / 2), ((_local14.y + _local15.y) / 2), ((_local14.z + _local15.z) / 2)); _local19 = _local11.getNextVertexID(); _local11.setVertex(_local19, ((_local15.x + _local16.x) / 2), ((_local15.y + _local16.y) / 2), ((_local15.z + _local16.z) / 2)); _local20 = _local11.getNextVertexID(); _local11.setVertex(_local20, ((_local16.x + _local13.x) / 2), ((_local16.y + _local13.y) / 2), ((_local16.z + _local13.z) / 2)); _local21 = _local11.getNextVertexID(); _local11.setVertex(_local21, ((((_local13.x + _local14.x) + _local15.x) + _local16.x) / 4), ((((_local13.y + _local14.y) + _local15.y) + _local16.y) / 4), ((((_local13.z + _local14.z) + _local15.z) + _local16.z) / 4)); _local22 = _local11.aUVCoords[_arg6]; _local23 = _local11.aUVCoords[_arg7]; _local24 = _local11.aUVCoords[_arg8]; _local25 = _local11.aUVCoords[_arg9]; _local11.setUVCoords(_local17, ((_local22.u + _local23.u) / 2), ((_local22.v + _local23.v) / 2)); _local11.setUVCoords(_local18, ((_local23.u + _local24.u) / 2), ((_local23.v + _local24.v) / 2)); _local11.setUVCoords(_local19, ((_local24.u + _local25.u) / 2), ((_local24.v + _local25.v) / 2)); _local11.setUVCoords(_local20, ((_local25.u + _local22.u) / 2), ((_local25.v + _local22.v) / 2)); _local11.setUVCoords(_local21, ((((_local22.u + _local23.u) + _local24.u) + _local25.u) / 4), ((((_local22.v + _local23.v) + _local24.v) + _local25.v) / 4)); __tesselate(_local11, _local21, _local20, _arg2, _local17, _local21, _local20, _arg6, _local17, (_arg10 - 1)); __tesselate(_local11, _local21, _local17, _arg3, _local18, _local21, _local17, _arg7, _local18, (_arg10 - 1)); __tesselate(_local11, _local21, _local18, _arg4, _local19, _local21, _local18, _arg8, _local19, (_arg10 - 1)); __tesselate(_local11, _local21, _local19, _arg5, _local20, _local21, _local19, _arg9, _local20, (_arg10 - 1)); }; } private function _generateFaces():void{ var _local1:uint; var _local2:uint; var _local3:Number; var _local4:Number; var _local5:Number; m_aFaces = new Array(6); _local1 = ((_mode == PrimitiveMode.TRI)) ? 2 : 1; _local2 = (_local1 * Math.pow(4, (_q - 1))); _local3 = 0; while (_local3 < 6) { m_aFaces[_local3] = new PrimitiveFace(this); _local4 = ((_local3 + 1) * _local2); _local5 = (_local3 * _local2); while (_local5 < _local4) { (m_aFaces[_local3] as PrimitiveFace).addPolygon(_local5); _local5++; }; _local3++; }; } override public function toString():String{ return ("sandy.primitive.Box"); } public function generate(... _args):Geometry3D{ var _local2:Geometry3D; 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; _local2 = new Geometry3D(); _local3 = (-(_h) / 2); _local4 = (_radius / 2); _local5 = (_lg / 2); _local6 = _local2.getNextVertexID(); _local2.setVertex(_local6, -(_local4), -(_local3), _local5); _local7 = _local2.getNextVertexID(); _local2.setVertex(_local7, _local4, -(_local3), _local5); _local8 = _local2.getNextVertexID(); _local2.setVertex(_local8, _local4, _local3, _local5); _local9 = _local2.getNextVertexID(); _local2.setVertex(_local9, -(_local4), _local3, _local5); _local10 = _local2.getNextVertexID(); _local2.setVertex(_local10, -(_local4), -(_local3), -(_local5)); _local11 = _local2.getNextVertexID(); _local2.setVertex(_local11, _local4, -(_local3), -(_local5)); _local12 = _local2.getNextVertexID(); _local2.setVertex(_local12, _local4, _local3, -(_local5)); _local13 = _local2.getNextVertexID(); _local2.setVertex(_local13, -(_local4), _local3, -(_local5)); _local2.setUVCoords(0, 0, 0); _local2.setUVCoords(1, 1, 0); _local2.setUVCoords(2, 0, 1); _local2.setUVCoords(3, 1, 1); __tesselate(_local2, _local6, _local7, _local8, _local9, 0, 2, 3, 1, (_q - 1)); __tesselate(_local2, _local10, _local13, _local12, _local11, 0, 2, 3, 1, (_q - 1)); __tesselate(_local2, _local8, _local12, _local13, _local9, 0, 2, 3, 1, (_q - 1)); __tesselate(_local2, _local6, _local10, _local11, _local7, 3, 1, 0, 2, (_q - 1)); __tesselate(_local2, _local6, _local9, _local13, _local10, 0, 2, 3, 1, (_q - 1)); __tesselate(_local2, _local7, _local11, _local12, _local8, 1, 0, 2, 3, (_q - 1)); return (_local2); } public function getFace(_arg1:uint):PrimitiveFace{ return (m_aFaces[_arg1]); } } }//package sandy.primitive
Section 68
//Line3D (sandy.primitive.Line3D) package sandy.primitive { import sandy.core.scenegraph.*; public class Line3D extends Shape3D implements Primitive3D { public function Line3D(_arg1:String=null, ... _args){ super(_arg1); if ((((_args.length == 1)) && ((_args[0] is Array)))){ var _local2:Array = _args[0]; }; if (_args.length < 2){ trace("Line3D::Too few arguments"); } else { geometry = generate(_args); enableBackFaceCulling = false; }; } override public function toString():String{ return ("sandy.primitive.Line3D"); } public function generate(... _args):Geometry3D{ var _local2:Geometry3D; var _local3:Array; var _local4:int; var _local5:int; _local2 = new Geometry3D(); _local3 = _args[0]; _local5 = _local3.length; while (_local4 < _local5) { _local2.setVertex(_local4, _local3[int(_local4)].x, _local3[int(_local4)].y, _local3[int(_local4)].z); _local4++; }; _local4 = 0; while (_local4 < (_local5 - 1)) { _local2.setFaceVertexIds(_local4, _local4, (_local4 + 1)); _local4++; }; return (_local2); } } }//package sandy.primitive
Section 69
//Plane3D (sandy.primitive.Plane3D) package sandy.primitive { import sandy.core.scenegraph.*; public class Plane3D extends Shape3D implements Primitive3D { private var m_sType:String; private var _h:Number; private var _lg:Number; private var _qH:uint; private var _mode:String; private var _qV:uint; public static const ZX_ALIGNED:String = "zx_aligned"; public static const YZ_ALIGNED:String = "yz_aligned"; public static const XY_ALIGNED:String = "xy_aligned"; public function Plane3D(_arg1:String=null, _arg2:Number=100, _arg3:Number=100, _arg4:uint=1, _arg5:uint=1, _arg6:String="xy_aligned", _arg7:String=null){ super(_arg1); _h = _arg2; _lg = _arg3; _qV = _arg5; _qH = _arg4; _mode = (((!((_arg7 == PrimitiveMode.TRI))) && (!((_arg7 == PrimitiveMode.QUAD))))) ? PrimitiveMode.TRI : _arg7; m_sType = _arg6; geometry = generate(); } override public function toString():String{ return ("sandy.primitive.Plane3D"); } public function generate(... _args):Geometry3D{ var _local2:Geometry3D; var _local3:uint; var _local4:uint; var _local5:Number; var _local6:Number; var _local7:Number; var _local8:Number; var _local9:Number; var _local10:Number; var _local11:Number; var _local12:Number; _local2 = new Geometry3D(); _local5 = (_h / 2); _local6 = (_lg / 2); _local7 = (_h / _qV); _local8 = (_lg / _qH); _local3 = 0; _local9 = -(_local5); _local11 = 0; while (_local3 <= _qV) { _local4 = 0; _local10 = -(_local6); _local12 = 0; while (_local4 <= _qH) { if (m_sType == Plane3D.ZX_ALIGNED){ _local2.setVertex(_local2.getNextVertexID(), _local10, 0, _local9); } else { if (m_sType == Plane3D.YZ_ALIGNED){ _local2.setVertex(_local2.getNextVertexID(), 0, _local10, _local9); } else { _local2.setVertex(_local2.getNextVertexID(), _local10, _local9, 0); }; }; _local2.setUVCoords(_local2.getNextUVCoordID(), (_local12 / _lg), (1 - (_local11 / _h))); _local10 = (_local10 + _local8); _local12 = (_local12 + _local8); _local4++; }; _local9 = (_local9 + _local7); _local11 = (_local11 + _local7); _local3++; }; _local3 = 0; while (_local3 < _qV) { _local4 = 0; while (_local4 < _qH) { if (_mode == PrimitiveMode.TRI){ _local2.setFaceVertexIds(_local2.getNextFaceID(), ((_local3 * (_qH + 1)) + _local4), (((_local3 * (_qH + 1)) + _local4) + 1), (((_local3 + 1) * (_qH + 1)) + _local4)); _local2.setFaceUVCoordsIds(_local2.getNextFaceUVCoordID(), ((_local3 * (_qH + 1)) + _local4), (((_local3 * (_qH + 1)) + _local4) + 1), (((_local3 + 1) * (_qH + 1)) + _local4)); _local2.setFaceVertexIds(_local2.getNextFaceID(), (((_local3 * (_qH + 1)) + _local4) + 1), ((((_local3 + 1) * (_qH + 1)) + _local4) + 1), (((_local3 + 1) * (_qH + 1)) + _local4)); _local2.setFaceUVCoordsIds(_local2.getNextFaceUVCoordID(), (((_local3 * (_qH + 1)) + _local4) + 1), ((((_local3 + 1) * (_qH + 1)) + _local4) + 1), (((_local3 + 1) * (_qH + 1)) + _local4)); } else { if (_mode == PrimitiveMode.QUAD){ _local2.setFaceVertexIds(_local2.getNextFaceID(), ((_local3 * (_qH + 1)) + _local4), (((_local3 * (_qH + 1)) + _local4) + 1), ((((_local3 + 1) * (_qH + 1)) + _local4) + 1), (((_local3 + 1) * (_qH + 1)) + _local4)); _local2.setFaceUVCoordsIds(_local2.getNextFaceUVCoordID(), ((_local3 * (_qH + 1)) + _local4), (((_local3 * (_qH + 1)) + _local4) + 1), ((((_local3 + 1) * (_qH + 1)) + _local4) + 1), (((_local3 + 1) * (_qH + 1)) + _local4)); }; }; _local4++; }; _local3++; }; return (_local2); } } }//package sandy.primitive
Section 70
//Primitive3D (sandy.primitive.Primitive3D) package sandy.primitive { import sandy.core.scenegraph.*; public interface Primitive3D { function generate(... _args):Geometry3D; } }//package sandy.primitive
Section 71
//PrimitiveMode (sandy.primitive.PrimitiveMode) package sandy.primitive { public final class PrimitiveMode { public static const TRI:String = "tri"; public static const QUAD:String = "quad"; } }//package sandy.primitive
Section 72
//NumberUtil (sandy.util.NumberUtil) package sandy.util { public class NumberUtil { private static var __TO_RADIAN:Number = 0.0174532925199433; private static var _fABS:Function = Math.abs; private static var __TWO_PI:Number = 6.28318530717959; private static var __PI:Number = 3.14159265358979; private static var __TO_DREGREE:Number = 57.2957795130823; private static var __HALF_PI:Number = 1.5707963267949; public static var TOL:Number = 1E-5; public static function areEqual(_arg1:Number, _arg2:Number):Boolean{ return ((_fABS((_arg1 - _arg2)) < TOL)); } public static function get TO_DEGREE():Number{ return (__TO_DREGREE); } public static function get HALF_PI():Number{ return (__HALF_PI); } public static function toDegree(_arg1:Number):Number{ return ((_arg1 * TO_DEGREE)); } public static function roundTo(_arg1:Number, _arg2:Number=0):Number{ if (_arg2 == 0){ _arg2 = 1; }; return ((Math.round((_arg1 / _arg2)) * _arg2)); } public static function get TWO_PI():Number{ return (__TWO_PI); } public static function isZero(_arg1:Number):Boolean{ return ((_fABS(_arg1) < TOL)); } public static function get TO_RADIAN():Number{ return (__TO_RADIAN); } public static function constrain(_arg1:Number, _arg2:Number, _arg3:Number):Number{ return (Math.max(Math.min(_arg1, _arg3), _arg2)); } public static function get PI():Number{ return (__PI); } public static function toRadian(_arg1:Number):Number{ return ((_arg1 * TO_RADIAN)); } } }//package sandy.util
Section 73
//CullingState (sandy.view.CullingState) package sandy.view { public class CullingState { private var m_sState:String; public static const OUTSIDE:CullingState = new CullingState("outside"); ; public static const INSIDE:CullingState = new CullingState("inside"); ; public static const INTERSECT:CullingState = new CullingState("intersect"); ; public function CullingState(_arg1:String){ m_sState = _arg1; } public function toString():String{ return (("[sandy.view.CullingState] :: state : " + m_sState)); } } }//package sandy.view
Section 74
//Frustum (sandy.view.Frustum) package sandy.view { import sandy.core.data.*; import sandy.bounds.*; import sandy.util.*; import sandy.math.*; public class Frustum { private const aDist:Array; private const m_aBoxEdges:Array; public var aNormals:Array; public var aPlanes:Array; private var pool:Pool; public var aPoints:Array; public var aConstants:Array; public static const INSIDE:CullingState = CullingState.INSIDE; public static const OUTSIDE:CullingState = CullingState.OUTSIDE; public static const INTERSECT:CullingState = CullingState.INTERSECT; public static const LEFT:uint = 3; public static const NEAR:uint = 1; public static const BOTTOM:uint = 5; public static const TOP:uint = 4; public static const FAR:uint = 0; public static const EPSILON:Number = 0.005; public static const RIGHT:uint = 2; public function Frustum(){ var _local1:int; m_aBoxEdges = new Array(8); pool = new Pool(); aDist = new Array(); super(); aPlanes = new Array(6); aPoints = new Array(8); aNormals = new Array(6); aConstants = new Array(6); _local1 = 0; while (_local1 < 8) { m_aBoxEdges[int(_local1)] = new Point3D(); _local1++; }; } public function clipPolygon(_arg1:Plane, _arg2:Array, _arg3:Array):Boolean{ var _local4:Boolean; var _local5:Boolean; var _local6:Vertex; var _local7:Number; var _local8:Number; var _local9:Number; var _local10:Array; var _local11:Array; var _local12:UVCoord; var _local13:UVCoord; var _local14:UVCoord; var _local15:Vertex; var _local16:Vertex; var _local17:Vertex; var _local18:Number; var _local19:Number; var _local20:Number; var _local21:Boolean; var _local22:Boolean; _local4 = true; _local5 = true; _local8 = _arg2.length; aDist.length = 0; for each (_local6 in _arg2) { _local9 = ((((_arg1.a * _local6.wx) + (_arg1.b * _local6.wy)) + (_arg1.c * _local6.wz)) + _arg1.d); if (_local9 < 0){ _local4 = false; }; if (_local9 >= 0){ _local5 = false; }; aDist[int(aDist.length)] = _local9; }; if (_local4){ return (false); }; if (_local5){ _arg2.splice(0); _arg3.splice(0); return (true); }; _local10 = _arg2.splice(0); _local11 = _arg3.splice(0); _local12 = _local11[0]; _local13 = null; _local14 = null; _local15 = _local10[0]; _local16 = null; _local17 = null; _local20 = aDist[0]; _local21 = false; _local22 = (_local20 >= 0); _local7 = 1; while (_local7 <= _local8) { _local16 = _local10[int((_local7 % _local8))]; _local13 = _local11[int((_local7 % _local8))]; _local19 = aDist[int((_local7 % _local8))]; if (((_local22) && ((_local19 >= 0)))){ _arg2[_arg2.length] = _local16; _arg3[_arg3.length] = _local13; } else { if (((!(_local22)) && ((_local19 >= 0)))){ _local22 = true; _local21 = _local22; _local17 = pool.nextVertex; _local18 = (_local20 / (_local20 - _local19)); _local17.wx = (_local15.wx + ((_local16.wx - _local15.wx) * _local18)); _local17.wy = (_local15.wy + ((_local16.wy - _local15.wy) * _local18)); _local17.wz = (_local15.wz + ((_local16.wz - _local15.wz) * _local18)); _arg2[_arg2.length] = _local17; _arg2[_arg2.length] = _local16; _local14 = pool.nextUV; _local14.u = (_local12.u + ((_local13.u - _local12.u) * _local18)); _local14.v = (_local12.v + ((_local13.v - _local12.v) * _local18)); _arg3[int(_arg3.length)] = _local14; _arg3[int(_arg3.length)] = _local13; } else { if (((_local22) && ((_local19 < 0)))){ _local21 = true; _local22 = false; _local17 = pool.nextVertex; _local18 = (_local20 / (_local20 - _local19)); _local17.wx = (_local15.wx + ((_local16.wx - _local15.wx) * _local18)); _local17.wy = (_local15.wy + ((_local16.wy - _local15.wy) * _local18)); _local17.wz = (_local15.wz + ((_local16.wz - _local15.wz) * _local18)); _local14 = pool.nextUV; _local14.u = (_local12.u + ((_local13.u - _local12.u) * _local18)); _local14.v = (_local12.v + ((_local13.v - _local12.v) * _local18)); _arg3[int(_arg3.length)] = _local14; _arg2[int(_arg2.length)] = _local17; } else { _local21 = true; }; }; }; _local15 = _local16; _local20 = _local19; _local12 = _local13; _local7++; }; return (true); } public function pointInFrustum(_arg1:Point3D):CullingState{ var _local2:Plane; for each (_local2 in aPlanes) { if (PlaneMath.classifyPoint(_local2, _arg1) == PlaneMath.NEGATIVE){ return (Frustum.OUTSIDE); }; }; return (Frustum.INSIDE); } public function polygonInFrustum(_arg1:Polygon):CullingState{ var _local2:int; var _local3:int; var _local4:Number; var _local5:Plane; var _local6:Vertex; _local2 = 0; _local3 = 0; for each (_local5 in aPlanes) { for each (_local6 in _arg1.vertices) { _local4 = ((((_local5.a * _local6.wx) + (_local5.b * _local6.wy)) + (_local5.c * _local6.wz)) + _local5.d); if (_local4 < 0){ if (_local2 > 0){ return (Frustum.INTERSECT); }; _local3++; } else { if (_local3 > 0){ return (Frustum.INTERSECT); }; _local2++; }; }; }; if (_local2 == 0){ return (Frustum.OUTSIDE); }; return (Frustum.INSIDE); } public function clipFrontPlane(_arg1:Array, _arg2:Array):Boolean{ if (_arg1.length <= 2){ return (true); }; return (clipPolygon(aPlanes[NEAR], _arg1, _arg2)); } public function boxInFrustum(_arg1:BBox):CullingState{ var _local2:CullingState; var _local3:Number; var _local4:Number; var _local5:Number; var _local6:Plane; var _local7:Point3D; _local2 = Frustum.INSIDE; _arg1.getEdges(m_aBoxEdges); for each (_local6 in aPlanes) { _local3 = 0; _local4 = 0; for each (_local7 in m_aBoxEdges) { _local5 = ((((_local6.a * _local7.x) + (_local6.b * _local7.y)) + (_local6.c * _local7.z)) + _local6.d); if (_local5 < 0){ _local3++; } else { _local4++; }; if ((((_local4 > 0)) && ((_local3 > 0)))){ break; }; }; if (_local4 == 0){ return (Frustum.OUTSIDE); }; if (_local3 > 0){ return (Frustum.INTERSECT); }; }; return (_local2); } public function computePlanes(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):void{ var _local5:Number; var _local6:Number; var _local7:Number; var _local8:Number; var _local9:Number; var _local10:Number; var _local11:Array; var _local12:int; _local5 = NumberUtil.toRadian(_arg4); _local6 = Math.tan((_local5 * 0.5)); _local7 = (-(_local6) * _arg2); _local8 = (_local7 * _arg1); _local9 = ((_local7 * _arg3) / _arg2); _local10 = ((_local8 * _arg3) / _arg2); _arg2 = -(_arg2); _arg3 = -(_arg3); _local11 = aPoints; _local11[0] = new Point3D(_local8, _local7, _arg2); _local11[1] = new Point3D(_local8, -(_local7), _arg2); _local11[2] = new Point3D(-(_local8), -(_local7), _arg2); _local11[3] = new Point3D(-(_local8), _local7, _arg2); _local11[4] = new Point3D(_local10, _local9, _arg3); _local11[5] = new Point3D(_local10, -(_local9), _arg3); _local11[6] = new Point3D(-(_local10), -(_local9), _arg3); _local11[7] = new Point3D(-(_local10), _local9, _arg3); aPlanes[LEFT] = PlaneMath.computePlaneFromPoints(_local11[2], _local11[3], _local11[6]); aPlanes[RIGHT] = PlaneMath.computePlaneFromPoints(_local11[0], _local11[1], _local11[4]); aPlanes[TOP] = PlaneMath.computePlaneFromPoints(_local11[0], _local11[7], _local11[3]); aPlanes[BOTTOM] = PlaneMath.computePlaneFromPoints(_local11[1], _local11[2], _local11[5]); aPlanes[NEAR] = PlaneMath.computePlaneFromPoints(_local11[0], _local11[2], _local11[1]); aPlanes[FAR] = PlaneMath.computePlaneFromPoints(_local11[4], _local11[5], _local11[6]); _local12 = 0; while (_local12 < 6) { PlaneMath.normalizePlane(aPlanes[int(_local12)]); _local12++; }; } public function sphereInFrustum(_arg1:BSphere):CullingState{ var _local2:Number; var _local3:int; var _local4:Number; var _local5:Number; var _local6:Number; var _local7:Number; var _local8:Plane; _local2 = 0; _local3 = 0; _local4 = _arg1.position.x; _local5 = _arg1.position.y; _local6 = _arg1.position.z; _local7 = _arg1.radius; for each (_local8 in aPlanes) { _local2 = ((((_local8.a * _local4) + (_local8.b * _local5)) + (_local8.c * _local6)) + _local8.d); if (_local2 <= -(_local7)){ return (Frustum.OUTSIDE); }; if (_local2 > _local7){ _local3++; }; }; return (((_local3)==6) ? Frustum.INSIDE : Frustum.INTERSECT); } public function clipFrustum(_arg1:Array, _arg2:Array):Boolean{ var _local3:Boolean; var _local4:Boolean; if (_arg1.length <= 2){ return (true); }; _local3 = clipPolygon(aPlanes[NEAR], _arg1, _arg2); _local4 = clipPolygon(aPlanes[LEFT], _arg1, _arg2); _local3 = ((_local3) || (_local4)); _local4 = clipPolygon(aPlanes[RIGHT], _arg1, _arg2); _local3 = ((_local3) || (_local4)); _local4 = clipPolygon(aPlanes[BOTTOM], _arg1, _arg2); _local3 = ((_local3) || (_local4)); _local4 = clipPolygon(aPlanes[TOP], _arg1, _arg2); _local3 = ((_local3) || (_local4)); return (_local3); } public function clipLineFrontPlane(_arg1:Array):Boolean{ var _local2:Plane; var _local3:Array; var _local4:Vertex; var _local5:Vertex; var _local6:Number; var _local7:Number; var _local8:Number; var _local9:Vertex; _local2 = aPlanes[NEAR]; _local3 = _arg1.splice(0); _local4 = _local3[0]; _local5 = _local3[1]; _local6 = ((((_local2.a * _local4.wx) + (_local2.b * _local4.wy)) + (_local2.c * _local4.wz)) + _local2.d); _local7 = ((((_local2.a * _local5.wx) + (_local2.b * _local5.wy)) + (_local2.c * _local5.wz)) + _local2.d); _local8 = 0; _local9 = pool.nextVertex; if ((((_local6 < 0)) && ((_local7 >= 0)))){ _local8 = (_local6 / (_local6 - _local7)); _local9.wx = (_local4.wx + ((_local5.wx - _local4.wx) * _local8)); _local9.wy = (_local4.wy + ((_local5.wy - _local4.wy) * _local8)); _local9.wz = (_local4.wz + ((_local5.wz - _local4.wz) * _local8)); _arg1[_arg1.length] = _local9; _arg1[_arg1.length] = _local5; return (true); }; if ((((_local7 < 0)) && ((_local6 >= 0)))){ _local8 = (_local6 / (_local6 - _local7)); _local9.wx = (_local4.wx + ((_local5.wx - _local4.wx) * _local8)); _local9.wy = (_local4.wy + ((_local5.wy - _local4.wy) * _local8)); _local9.wz = (_local4.wz + ((_local5.wz - _local4.wz) * _local8)); _arg1[_arg1.length] = _local4; _arg1[_arg1.length] = _local9; return (true); }; if ((((_local7 < 0)) && ((_local6 < 0)))){ _arg1 = null; return (true); }; if ((((_local7 > 0)) && ((_local6 > 0)))){ _arg1[_arg1.length] = _local4; _arg1[_arg1.length] = _local5; return (false); }; return (true); } } }//package sandy.view
Section 75
//ViewPort (sandy.view.ViewPort) package sandy.view { import flash.geom.*; public final class ViewPort { public const offset:Point; private var m_nH2:int;// = 0 private var m_nRatio:Number;// = 0 private var m_nW2:int;// = 0 private var m_nH:int;// = 0 public var hasChanged:Boolean;// = false private var m_nW:int;// = 0 public function ViewPort(_arg1:Number, _arg2:Number){ offset = new Point(); hasChanged = false; m_nW = 0; m_nW2 = 0; m_nH = 0; m_nH2 = 0; m_nRatio = 0; super(); width = _arg1; height = _arg2; } public function get width():int{ return (m_nW); } public function update():void{ m_nW2 = (m_nW >> 1); m_nH2 = (m_nH >> 1); m_nRatio = (m_nH) ? (m_nW / m_nH) : 0; hasChanged = true; } public function get ratio():Number{ return (m_nRatio); } public function set height(_arg1:int):void{ m_nH = _arg1; update(); } public function set width(_arg1:int):void{ m_nW = _arg1; update(); } public function get height():int{ return (m_nH); } public function get height2():int{ return (m_nH2); } public function get width2():int{ return (m_nW2); } } }//package sandy.view
Section 76
//agame_com_intro_animatie_79 (throwWalls_fla.agame_com_intro_animatie_79) package throwWalls_fla { import flash.display.*; import flash.events.*; import flash.geom.*; import flash.text.*; import flash.filters.*; import flash.media.*; import flash.utils.*; import flash.net.*; import flash.system.*; import flash.ui.*; import flash.accessibility.*; import flash.errors.*; public dynamic class agame_com_intro_animatie_79 extends MovieClip { public function agame_com_intro_animatie_79(){ addFrameScript(88, frame89); } function frame89(){ stop(); } } }//package throwWalls_fla
Section 77
//branding_aligned_center_19 (throwWalls_fla.branding_aligned_center_19) package throwWalls_fla { import flash.display.*; import flash.events.*; import flash.geom.*; import flash.text.*; import flash.filters.*; import flash.media.*; import flash.utils.*; import flash.net.*; import flash.system.*; import flash.ui.*; import flash.accessibility.*; import flash.errors.*; public dynamic class branding_aligned_center_19 extends MovieClip { public function branding_aligned_center_19(){ addFrameScript(0, frame1); } function frame1(){ gotoAndStop(language.branding_nr); } } }//package throwWalls_fla
Section 78
//control_mc_5 (throwWalls_fla.control_mc_5) package throwWalls_fla { import flash.display.*; import flash.text.*; public dynamic class control_mc_5 extends MovieClip { public var target_mc:MovieClip; public var current_mc:MovieClip; public var restart_btn:SimpleButton; public var grid_mc:MovieClip; public var target_txt:TextField; } }//package throwWalls_fla
Section 79
//credits_mc_16 (throwWalls_fla.credits_mc_16) package throwWalls_fla { import flash.display.*; import flash.events.*; import flash.geom.*; import flash.text.*; import flash.filters.*; import flash.media.*; import flash.utils.*; import flash.net.*; import flash.system.*; import flash.ui.*; import flash.accessibility.*; import flash.errors.*; public dynamic class credits_mc_16 extends MovieClip { public function credits_mc_16(){ addFrameScript(0, frame1); } function frame1(){ stop(); } } }//package throwWalls_fla
Section 80
//game_com_cn_intro_animatie_85 (throwWalls_fla.game_com_cn_intro_animatie_85) package throwWalls_fla { import flash.display.*; import flash.events.*; import flash.geom.*; import flash.text.*; import flash.filters.*; import flash.media.*; import flash.utils.*; import flash.net.*; import flash.system.*; import flash.ui.*; import flash.accessibility.*; import flash.errors.*; public dynamic class game_com_cn_intro_animatie_85 extends MovieClip { public function game_com_cn_intro_animatie_85(){ addFrameScript(88, frame89); } function frame89(){ stop(); } } }//package throwWalls_fla
Section 81
//GAME_OVER_MC_70 (throwWalls_fla.GAME_OVER_MC_70) package throwWalls_fla { import flash.display.*; public dynamic class GAME_OVER_MC_70 extends MovieClip { public var send_score_btn:SimpleButton; public var main_menu_btn:SimpleButton; public var button_gameover_moregames:SimpleButton; public var logo_mainscreen:MovieClip; } }//package throwWalls_fla
Section 82
//gamesgames_intro_animatie_75 (throwWalls_fla.gamesgames_intro_animatie_75) package throwWalls_fla { import flash.display.*; import flash.events.*; import flash.geom.*; import flash.text.*; import flash.filters.*; import flash.media.*; import flash.utils.*; import flash.net.*; import flash.system.*; import flash.ui.*; import flash.accessibility.*; import flash.errors.*; public dynamic class gamesgames_intro_animatie_75 extends MovieClip { public function gamesgames_intro_animatie_75(){ addFrameScript(89, frame90, 90, frame91); } function frame90(){ } function frame91(){ stop(); } } }//package throwWalls_fla
Section 83
//girlsgogames_com_intro_animatie_82 (throwWalls_fla.girlsgogames_com_intro_animatie_82) package throwWalls_fla { import flash.display.*; import flash.events.*; import flash.geom.*; import flash.text.*; import flash.filters.*; import flash.media.*; import flash.utils.*; import flash.net.*; import flash.system.*; import flash.ui.*; import flash.accessibility.*; import flash.errors.*; public dynamic class girlsgogames_com_intro_animatie_82 extends MovieClip { public function girlsgogames_com_intro_animatie_82(){ addFrameScript(88, frame89); } function frame89(){ stop(); } } }//package throwWalls_fla
Section 84
//intro_74 (throwWalls_fla.intro_74) package throwWalls_fla { import flash.display.*; import flash.events.*; import flash.geom.*; import flash.text.*; import flash.filters.*; import flash.media.*; import flash.utils.*; import flash.net.*; import flash.system.*; import flash.ui.*; import flash.accessibility.*; import flash.errors.*; public dynamic class intro_74 extends MovieClip { public var hitarea:MovieClip; public function intro_74(){ addFrameScript(0, frame1); } function frame1(){ if (language.portal == "family"){ gotoAndStop(1); }; if (language.portal == "tweens"){ gotoAndStop(2); }; if (language.portal == "girl"){ gotoAndStop(3); }; if (language.portal == "game_com_cn"){ gotoAndStop(4); }; } } }//package throwWalls_fla
Section 85
//intro_hitarea_78 (throwWalls_fla.intro_hitarea_78) package throwWalls_fla { import flash.display.*; import flash.events.*; import flash.geom.*; import flash.text.*; import flash.filters.*; import flash.media.*; import flash.utils.*; import flash.net.*; import flash.system.*; import flash.ui.*; import flash.accessibility.*; import flash.errors.*; public dynamic class intro_hitarea_78 extends MovieClip { public var button_intro:SimpleButton; public function intro_hitarea_78(){ addFrameScript(89, frame90); } function frame90(){ stop(); } } }//package throwWalls_fla
Section 86
//main_menu_mc_12 (throwWalls_fla.main_menu_mc_12) package throwWalls_fla { import flash.display.*; public dynamic class main_menu_mc_12 extends MovieClip { public var credit_btn:SimpleButton; public var button_mainscreen_moregames:SimpleButton; public var credits_mc:MovieClip; public var logo_mainscreen:MovieClip; public var highscore_btn:SimpleButton; public var continue_btn:SimpleButton; public var start_btn:SimpleButton; } }//package throwWalls_fla
Section 87
//MainTimeline (throwWalls_fla.MainTimeline) package throwWalls_fla { import flash.display.*; import ascb.util.*; import flash.events.*; import flash.geom.*; import flash.text.*; import flash.filters.*; import ascb.mochi.*; import flash.media.*; import flash.utils.*; import flash.net.*; import flash.system.*; import flash.ui.*; import flash.accessibility.*; import flash.errors.*; public dynamic class MainTimeline extends MovieClip { public var preloader_txt:TextField; public var intro:MovieClip; public var request:URLRequest; public var preloader_line_mc:MovieClip; public function MainTimeline(){ addFrameScript(0, frame1, 2, frame3); } public function loading(_arg1:Event){ var _local2:*; var _local3:*; _local2 = stage.loaderInfo.bytesTotal; _local3 = stage.loaderInfo.bytesLoaded; preloader_txt.text = (Math.round(((_local3 / _local2) * 100)).toString() + "%"); preloader_line_mc.scaleX = (_local3 / _local2); if (_local3 >= _local2){ removeEventListener(Event.ENTER_FRAME, loading); gotoAndPlay(3); }; } public function onCLick1(_arg1:Event){ if (language.language_nr == 2){ request = new URLRequest(language.url1); } else { request = new URLRequest((language.url1 + "&utm_content=logo_intro")); }; navigateToURL(request, "_blank"); } public function onCLick2(_arg1:Event){ if (language.language_nr == 2){ request = new URLRequest(language.url1); } else { request = new URLRequest((language.url1 + "&utm_content=button_mainscreen_moregames")); }; navigateToURL(request, "_blank"); } public function onCLick4(_arg1:Event){ if (language.language_nr == 2){ request = new URLRequest(language.url1); } else { request = new URLRequest((language.url1 + "&utm_content=button_highscore_3000games")); }; navigateToURL(request, "_blank"); } function frame3(){ stop(); localConnection = new LocalConnection(); language.Language = 1; intro.hitarea.button_intro.addEventListener(MouseEvent.CLICK, onCLick1); stop(); } function frame1(){ stop(); MochiBot.track(this, "cebe599f"); stage.showDefaultContextMenu = false; if (!URLUtils.checkDomain(stage.loaderInfo.url, "agame.com")){ MochiAd.showPreGameAd({clip:root, id:"1692a2b151871b72", res:"640x480"}); } else { addEventListener(Event.ENTER_FRAME, loading); preloader_line_mc.scaleX = 0; }; } public function onCLick3(_arg1:Event){ if (language.language_nr == 2){ request = new URLRequest(language.url1); } else { request = new URLRequest((language.url1 + "&utm_content=button_gameover_moregames")); }; navigateToURL(request, "_blank"); } } }//package throwWalls_fla
Section 88
//text1_18 (throwWalls_fla.text1_18) package throwWalls_fla { import flash.display.*; import flash.events.*; import flash.geom.*; import flash.text.*; import flash.filters.*; import flash.media.*; import flash.utils.*; import flash.net.*; import flash.system.*; import flash.ui.*; import flash.accessibility.*; import flash.errors.*; public dynamic class text1_18 extends MovieClip { public function text1_18(){ addFrameScript(0, frame1); } function frame1(){ gotoAndStop(language.language_nr); } } }//package throwWalls_fla
Section 89
//Timeline_2 (throwWalls_fla.Timeline_2) package throwWalls_fla { import flash.display.*; import flash.events.*; import flash.geom.*; import flash.text.*; import flash.filters.*; import flash.media.*; import flash.utils.*; import flash.net.*; import flash.system.*; import flash.ui.*; import flash.accessibility.*; import flash.errors.*; public dynamic class Timeline_2 extends MovieClip { public function Timeline_2(){ addFrameScript(0, frame1); } function frame1(){ stop(); } } }//package throwWalls_fla
Section 90
//topControl_mc_8 (throwWalls_fla.topControl_mc_8) package throwWalls_fla { import flash.display.*; import flash.text.*; public dynamic class topControl_mc_8 extends MovieClip { public var sound_btn:SimpleButton; public var lives_txt:TextField; public var scores_txt:TextField; public var sound_txt:TextField; public var quit_btn:SimpleButton; public var pause_btn:SimpleButton; } }//package throwWalls_fla
Section 91
//tutorial_mc_68 (throwWalls_fla.tutorial_mc_68) package throwWalls_fla { import flash.display.*; import flash.events.*; import flash.geom.*; import flash.text.*; import flash.filters.*; import flash.media.*; import flash.utils.*; import flash.net.*; import flash.system.*; import flash.ui.*; import flash.accessibility.*; import flash.errors.*; public dynamic class tutorial_mc_68 extends MovieClip { public var hidetutorial_btn:SimpleButton; public function tutorial_mc_68(){ addFrameScript(0, frame1, 229, frame230); } function frame1(){ stop(); } function frame230(){ stop(); } } }//package throwWalls_fla
Section 92
//Bg (Bg) package { import flash.display.*; public class Bg extends MovieClip { private static var _instanse:Bg; public function Bg(){ _instanse = this; } public static function get instanse():Bg{ return (_instanse); } } }//package
Section 93
//bgmusic (bgmusic) package { import flash.media.*; public dynamic class bgmusic extends Sound { } }//package
Section 94
//CollisionBox (CollisionBox) package { import sandy.core.data.*; import flash.geom.*; import sandy.primitive.*; public class CollisionBox extends Box { public var speedX:Number;// = 0 public var speedZ:Number;// = 0 public var speedY:Number;// = 0 public var zWidth:Number; public var xWidth:Number; public var yWidth:Number; public function CollisionBox(_arg1:String=null, _arg2:Number=6, _arg3:Number=6, _arg4:Number=6, _arg5:String="tri", _arg6:Number=1){ speedX = 0; speedZ = 0; speedY = 0; super(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6); xWidth = _arg2; yWidth = _arg3; zWidth = _arg4; stop(); } public function stop():void{ speedX = 0; speedZ = 0; speedY = 0; } public function getProjection(_arg1:Point3D):Rectangle{ var _local2:Rectangle; var _local3:Number; var _local4:Number; _local2 = new Rectangle(); if ((((((_arg1.x == 0)) && ((_arg1.y == 0)))) && ((_arg1.z == 0)))){ _local2 = new Rectangle(x, -(y), zWidth, yWidth); }; if ((((((_arg1.x == 0)) && ((_arg1.y == 0)))) && ((_arg1.z == 90)))){ _local2 = new Rectangle(-(y), -(x), zWidth, yWidth); }; if ((((((_arg1.x == 0)) && ((_arg1.y == 0)))) && ((_arg1.z == 180)))){ _local2 = new Rectangle(-(x), y, zWidth, yWidth); }; if ((((((_arg1.x == 0)) && ((_arg1.y == 0)))) && ((_arg1.z == 270)))){ _local2 = new Rectangle(y, x, zWidth, yWidth); }; if ((((((_arg1.x == 0)) && ((_arg1.y == 90)))) && ((_arg1.z == 0)))){ _local2 = new Rectangle(-(z), -(y), zWidth, yWidth); }; if ((((((_arg1.x == 0)) && ((_arg1.y == 90)))) && ((_arg1.z == 2)))){ _local2 = new Rectangle(-(z), x, zWidth, yWidth); }; if ((((((_arg1.x == 0)) && ((_arg1.y == 90)))) && ((((_arg1.z == 357)) || ((_arg1.z == 3)))))){ _local2 = new Rectangle(-(z), y, zWidth, yWidth); }; if ((((((_arg1.x == 0)) && ((_arg1.y == 90)))) && ((_arg1.z == 358)))){ _local2 = new Rectangle(-(z), -(x), zWidth, yWidth); }; if ((((((_arg1.x == 0)) && ((_arg1.y == 180)))) && ((_arg1.z == 0)))){ _local2 = new Rectangle(x, -(y), zWidth, yWidth); }; if ((((((_arg1.x == 0)) && ((_arg1.y == 180)))) && ((_arg1.z == 90)))){ _local2 = new Rectangle(x, -(y), zWidth, yWidth); }; if ((((((_arg1.x == 0)) && ((_arg1.y == 180)))) && ((_arg1.z == 180)))){ _local2 = new Rectangle(x, -(y), zWidth, yWidth); }; if ((((((_arg1.x == 0)) && ((_arg1.y == 180)))) && ((_arg1.z == 270)))){ _local2 = new Rectangle(x, -(y), zWidth, yWidth); }; if ((((((_arg1.x == 0)) && ((_arg1.y == 270)))) && ((_arg1.z == 0)))){ _local2 = new Rectangle(z, -(y), zWidth, yWidth); }; if ((((((_arg1.x == 0)) && ((_arg1.y == 270)))) && ((_arg1.z == 2)))){ _local2 = new Rectangle(z, x, zWidth, yWidth); }; if ((((((_arg1.x == 0)) && ((_arg1.y == 270)))) && ((((_arg1.z == 357)) || ((_arg1.z == 3)))))){ _local2 = new Rectangle(z, y, zWidth, yWidth); }; if ((((((_arg1.x == 0)) && ((_arg1.y == 270)))) && ((_arg1.z == 358)))){ _local2 = new Rectangle(z, -(x), zWidth, yWidth); }; if ((((((_arg1.x == 90)) && ((_arg1.y == 0)))) && ((_arg1.z == 0)))){ _local2 = new Rectangle(x, z, zWidth, yWidth); }; if ((((((_arg1.x == 90)) && ((_arg1.y == 0)))) && ((_arg1.z == 90)))){ _local2 = new Rectangle(-(y), z, zWidth, yWidth); }; if ((((((_arg1.x == 90)) && ((_arg1.y == 0)))) && ((_arg1.z == 180)))){ _local2 = new Rectangle(-(x), z, zWidth, yWidth); }; if ((((((_arg1.x == 90)) && ((_arg1.y == 0)))) && ((_arg1.z == 270)))){ _local2 = new Rectangle(y, z, zWidth, yWidth); }; if ((((((_arg1.x == 90)) && ((_arg1.y == 90)))) && ((_arg1.z == 0)))){ _local2 = new Rectangle(x, -(y), zWidth, yWidth); }; if ((((((_arg1.x == 90)) && ((_arg1.y == 90)))) && ((_arg1.z == 90)))){ _local2 = new Rectangle(x, -(y), zWidth, yWidth); }; if ((((((_arg1.x == 90)) && ((_arg1.y == 90)))) && ((_arg1.z == 180)))){ _local2 = new Rectangle(x, -(y), zWidth, yWidth); }; if ((((((_arg1.x == 90)) && ((_arg1.y == 90)))) && ((_arg1.z == 270)))){ _local2 = new Rectangle(x, -(y), zWidth, yWidth); }; if ((((((_arg1.x == 90)) && ((_arg1.y == 180)))) && ((_arg1.z == 0)))){ _local2 = new Rectangle(x, -(y), zWidth, yWidth); }; if ((((((_arg1.x == 90)) && ((_arg1.y == 180)))) && ((_arg1.z == 90)))){ _local2 = new Rectangle(x, -(y), zWidth, yWidth); }; if ((((((_arg1.x == 90)) && ((_arg1.y == 180)))) && ((_arg1.z == 180)))){ _local2 = new Rectangle(x, -(y), zWidth, yWidth); }; if ((((((_arg1.x == 90)) && ((_arg1.y == 180)))) && ((_arg1.z == 270)))){ _local2 = new Rectangle(x, -(y), zWidth, yWidth); }; if ((((((_arg1.x == 90)) && ((_arg1.y == 270)))) && ((_arg1.z == 0)))){ _local2 = new Rectangle(x, -(y), zWidth, yWidth); }; if ((((((_arg1.x == 90)) && ((_arg1.y == 270)))) && ((_arg1.z == 90)))){ _local2 = new Rectangle(x, -(y), zWidth, yWidth); }; if ((((((_arg1.x == 90)) && ((_arg1.y == 270)))) && ((_arg1.z == 180)))){ _local2 = new Rectangle(x, -(y), zWidth, yWidth); }; if ((((((_arg1.x == 90)) && ((_arg1.y == 270)))) && ((_arg1.z == 270)))){ _local2 = new Rectangle(x, -(y), zWidth, yWidth); }; if ((((((_arg1.x == 180)) && ((_arg1.y == 0)))) && ((_arg1.z == 0)))){ _local2 = new Rectangle(x, y, zWidth, yWidth); }; if ((((((_arg1.x == 180)) && ((_arg1.y == 0)))) && ((_arg1.z == 90)))){ _local2 = new Rectangle(-(y), x, zWidth, yWidth); }; if ((((((_arg1.x == 180)) && ((_arg1.y == 0)))) && ((_arg1.z == 180)))){ _local2 = new Rectangle(-(x), -(y), zWidth, yWidth); }; if ((((((_arg1.x == 180)) && ((_arg1.y == 0)))) && ((_arg1.z == 270)))){ _local2 = new Rectangle(y, -(x), zWidth, yWidth); }; if ((((((_arg1.x == 180)) && ((_arg1.y == 90)))) && ((_arg1.z == 0)))){ _local2 = new Rectangle(x, -(y), zWidth, yWidth); }; if ((((((_arg1.x == 180)) && ((_arg1.y == 90)))) && ((_arg1.z == 90)))){ _local2 = new Rectangle(x, -(y), zWidth, yWidth); }; if ((((((_arg1.x == 180)) && ((_arg1.y == 90)))) && ((_arg1.z == 180)))){ _local2 = new Rectangle(x, -(y), zWidth, yWidth); }; if ((((((_arg1.x == 180)) && ((_arg1.y == 90)))) && ((_arg1.z == 270)))){ _local2 = new Rectangle(x, -(y), zWidth, yWidth); }; if ((((((_arg1.x == 180)) && ((_arg1.y == 180)))) && ((_arg1.z == 0)))){ _local2 = new Rectangle(x, -(y), zWidth, yWidth); }; if ((((((_arg1.x == 180)) && ((_arg1.y == 180)))) && ((_arg1.z == 90)))){ _local2 = new Rectangle(x, -(y), zWidth, yWidth); }; if ((((((_arg1.x == 180)) && ((_arg1.y == 180)))) && ((_arg1.z == 180)))){ _local2 = new Rectangle(x, -(y), zWidth, yWidth); }; if ((((((_arg1.x == 180)) && ((_arg1.y == 180)))) && ((_arg1.z == 270)))){ _local2 = new Rectangle(x, -(y), zWidth, yWidth); }; if ((((((_arg1.x == 180)) && ((_arg1.y == 270)))) && ((_arg1.z == 0)))){ _local2 = new Rectangle(x, -(y), zWidth, yWidth); }; if ((((((_arg1.x == 180)) && ((_arg1.y == 270)))) && ((_arg1.z == 90)))){ _local2 = new Rectangle(x, -(y), zWidth, yWidth); }; if ((((((_arg1.x == 180)) && ((_arg1.y == 270)))) && ((_arg1.z == 180)))){ _local2 = new Rectangle(x, -(y), zWidth, yWidth); }; if ((((((_arg1.x == 180)) && ((_arg1.y == 270)))) && ((_arg1.z == 270)))){ _local2 = new Rectangle(x, -(y), zWidth, yWidth); }; if ((((((_arg1.x == 270)) && ((_arg1.y == 0)))) && ((_arg1.z == 0)))){ _local2 = new Rectangle(x, -(z), zWidth, yWidth); }; if ((((((_arg1.x == 270)) && ((_arg1.y == 0)))) && ((_arg1.z == 90)))){ _local2 = new Rectangle(-(y), -(z), zWidth, yWidth); }; if ((((((_arg1.x == 270)) && ((_arg1.y == 0)))) && ((_arg1.z == 180)))){ _local2 = new Rectangle(-(x), -(z), zWidth, yWidth); }; if ((((((_arg1.x == 270)) && ((_arg1.y == 0)))) && ((_arg1.z == 270)))){ _local2 = new Rectangle(y, -(z), zWidth, yWidth); }; if ((((((_arg1.x == 270)) && ((_arg1.y == 90)))) && ((_arg1.z == 0)))){ _local2 = new Rectangle(x, -(y), zWidth, yWidth); }; if ((((((_arg1.x == 270)) && ((_arg1.y == 90)))) && ((_arg1.z == 90)))){ _local2 = new Rectangle(x, -(y), zWidth, yWidth); }; if ((((((_arg1.x == 270)) && ((_arg1.y == 90)))) && ((_arg1.z == 180)))){ _local2 = new Rectangle(x, -(y), zWidth, yWidth); }; if ((((((_arg1.x == 270)) && ((_arg1.y == 90)))) && ((_arg1.z == 270)))){ _local2 = new Rectangle(x, -(y), zWidth, yWidth); }; if ((((((_arg1.x == 270)) && ((_arg1.y == 180)))) && ((_arg1.z == 0)))){ _local2 = new Rectangle(x, -(y), zWidth, yWidth); }; if ((((((_arg1.x == 270)) && ((_arg1.y == 180)))) && ((_arg1.z == 90)))){ _local2 = new Rectangle(x, -(y), zWidth, yWidth); }; if ((((((_arg1.x == 270)) && ((_arg1.y == 180)))) && ((_arg1.z == 180)))){ _local2 = new Rectangle(x, -(y), zWidth, yWidth); }; if ((((((_arg1.x == 270)) && ((_arg1.y == 180)))) && ((_arg1.z == 270)))){ _local2 = new Rectangle(x, -(y), zWidth, yWidth); }; if ((((((_arg1.x == 270)) && ((_arg1.y == 270)))) && ((_arg1.z == 0)))){ _local2 = new Rectangle(x, -(y), zWidth, yWidth); }; if ((((((_arg1.x == 270)) && ((_arg1.y == 270)))) && ((_arg1.z == 90)))){ _local2 = new Rectangle(x, -(y), zWidth, yWidth); }; if ((((((_arg1.x == 270)) && ((_arg1.y == 270)))) && ((_arg1.z == 180)))){ _local2 = new Rectangle(x, -(y), zWidth, yWidth); }; if ((((((_arg1.x == 270)) && ((_arg1.y == 270)))) && ((_arg1.z == 270)))){ _local2 = new Rectangle(x, -(y), zWidth, yWidth); }; _local3 = x; _local4 = -(y); if (_arg1.x == 180){ _local3 = (_local3 * -1); }; if ((((_arg1.x == 270)) || ((_arg1.x == 90)))){ _local4 = ((_arg1.y == 180)) ? y : -(y); }; if ((((_arg1.y == 270)) || ((_arg1.y == 90)))){ _local3 = ((_arg1.y == 90)) ? -(z) : z; }; return (_local2); } public function collisionVsBox(_arg1:CollisionBox):Boolean{ var _local2:Rectangle; var _local3:Rectangle; if (((!((speedZ == 0))) && ((y == _arg1.y)))){ _local2 = new Rectangle((x - (xWidth / 2)), ((z + speedZ) - (zWidth / 2)), xWidth, zWidth); _local3 = new Rectangle((_arg1.x - (_arg1.xWidth / 2)), (_arg1.z - (_arg1.zWidth / 2)), _arg1.xWidth, _arg1.zWidth); return (_local3.intersects(_local2)); }; if (((!((speedX == 0))) && ((y == _arg1.y)))){ _local2 = new Rectangle(((x + speedX) - (xWidth / 2)), (z - (zWidth / 2)), xWidth, zWidth); _local3 = new Rectangle((_arg1.x - (_arg1.xWidth / 2)), (_arg1.z - (_arg1.zWidth / 2)), _arg1.xWidth, _arg1.zWidth); return (_local2.intersects(_local3)); }; if (((!((speedY == 0))) && ((z == _arg1.z)))){ _local2 = new Rectangle((x - (xWidth / 2)), ((y + speedY) - (yWidth / 2)), xWidth, yWidth); _local3 = new Rectangle((_arg1.x - (_arg1.xWidth / 2)), (_arg1.y - (_arg1.yWidth / 2)), _arg1.xWidth, _arg1.yWidth); return (_local2.intersects(_local3)); }; return (false); } public function move():void{ y = (y + speedY); z = (z + speedZ); x = (x + speedX); } } }//package
Section 95
//ContinueGame (ContinueGame) package { import flash.display.*; public class ContinueGame extends SimpleButton { private static var _instanse:ContinueGame; public function ContinueGame(_arg1:DisplayObject=null, _arg2:DisplayObject=null, _arg3:DisplayObject=null, _arg4:DisplayObject=null){ super(_arg1, _arg2, _arg3, _arg4); _instanse = this; } public static function get instanse():ContinueGame{ return (_instanse); } } }//package
Section 96
//flip (flip) package { import flash.media.*; public dynamic class flip extends Sound { } }//package
Section 97
//gameover (gameover) package { import flash.media.*; public dynamic class gameover extends Sound { } }//package
Section 98
//hit (hit) package { import flash.media.*; public dynamic class hit extends Sound { } }//package
Section 99
//language (language) package { import flash.net.*; public class language { public static var localConnection = new LocalConnection(); public static var _languageNum:uint = 0; public static var _languageBox:Array = new Array(); public static var SpillGroupUrl:Array = new Array(); public static var gamename = "through_walls"; public static function get url2():String{ var _local1:int; _local1 = 0; while (_local1 < SpillGroupUrl.length) { if (localConnection.domain == SpillGroupUrl[_local1]){ return (_languageBox[_languageNum].url2); }; _local1++; }; return (_languageBox[_languageNum].url2); } public static function get language_nr():String{ return (_languageBox[_languageNum].language_nr); } public static function get portal():String{ return (_languageBox[_languageNum].portal); } public static function set Language(_arg1:Object):void{ var returnDomain:*; var hostingdomain:String; var myList:String; var myArray:Array; var language1:*; var language2:*; var language3:*; var language4:*; var language5:*; var language6:*; var language7:*; var language8:*; var language9:*; var language10:*; var language11:*; var language12:*; var language13:*; var language14:*; var language15:*; var language16:*; var language17:*; var language18:*; var domainextention:int; var domainname:int; var languageVersion = _arg1; returnDomain = function (_arg1:String):String{ var _local2:String; var _local3:uint; _local2 = new String(); _local3 = 7; while (_local3 < _arg1.length) { if (_arg1.charAt(_local3) == "/"){ break; }; _local2 = (_local2 + _arg1.charAt(_local3)); _local3++; }; return (_local2); }; hostingdomain = ""; myList = localConnection.domain; myArray = myList.split("."); if (myArray.length <= 3){ domainextention = (myArray.length - 1); domainname = (myArray.length - 2); hostingdomain = ((myArray[domainname] + ".") + myArray[domainextention]); } else { hostingdomain = localConnection.domain; }; language1 = new languageItem(); language1.url1 = ((("http://www.gamesgames.com/moregames/?utm_medium=brandedgames_external&utm_campaign=" + gamename) + "&utm_source=") + hostingdomain); language1.url2 = ("http://www.gamesgames.com/moregames/?utm_medium=brandedgames_internal&utm_campaign=" + gamename); language1.language_nr = 1; language1.branding_nr = 17; language1.portal = "family"; _languageBox.push(language1); language2 = new languageItem(); language2.url1 = "http://www.game.com.cn/moregames/"; language2.url2 = "http://www.game.com.cn/moregames/"; language2.language_nr = 2; language2.branding_nr = 2; language2.portal = "game_com_cn"; _languageBox.push(language2); language3 = new languageItem(); language3.url1 = ((("http://www.spelletjes.nl/moregames/?utm_medium=brandedgames_external&utm_campaign=" + gamename) + "&utm_source=") + hostingdomain); language3.url2 = ("http://www.spelletjes.nl/moregames/?utm_medium=brandedgames_internal&utm_campaign=" + gamename); language3.language_nr = 3; language3.branding_nr = 18; language3.portal = "family"; _languageBox.push(language3); language4 = new languageItem(); language4.url1 = ((("http://www.jeux.fr/moregames/?utm_medium=brandedgames_external&utm_campaign=" + gamename) + "&utm_source=") + hostingdomain); language4.url2 = ("http://www.jeux.fr/moregames/?utm_medium=brandedgames_internal&utm_campaign=" + gamename); language4.language_nr = 4; language4.branding_nr = 19; language4.portal = "family"; _languageBox.push(language4); language5 = new languageItem(); language5.url1 = ((("http://www.jetztspielen.de/moregames/?utm_medium=brandedgames_external&utm_campaign=" + gamename) + "&utm_source=") + hostingdomain); language5.url2 = ("http://www.jetztspielen.de/moregames/?utm_medium=brandedgames_internal&utm_campaign=" + gamename); language5.language_nr = 5; language5.branding_nr = 20; language5.portal = "family"; _languageBox.push(language5); language6 = new languageItem(); language6.url1 = ((("http://www.gry.pl/moregames/?utm_medium=brandedgames_external&utm_campaign=" + gamename) + "&utm_source=") + hostingdomain); language6.url2 = ("http://www.gry.pl/moregames/?utm_medium=brandedgames_internal&utm_campaign=" + gamename); language6.language_nr = 6; language6.branding_nr = 21; language6.portal = "family"; _languageBox.push(language6); language7 = new languageItem(); language7.url1 = ((("http://www.spela.se/moregames/?utm_medium=brandedgames_external&utm_campaign=" + gamename) + "&utm_source=") + hostingdomain); language7.url2 = ("http://www.spela.se/moregames/?utm_medium=brandedgames_internal&utm_campaign=" + gamename); language7.language_nr = 7; language7.branding_nr = 22; language7.portal = "family"; _languageBox.push(language7); language8 = new languageItem(); language8.url1 = ((("http://www.gioco.it/moregames/?utm_medium=brandedgames_external&utm_campaign=" + gamename) + "&utm_source=") + hostingdomain); language8.url2 = ("http://www.gioco.it/moregames/?utm_medium=brandedgames_internal&utm_campaign=" + gamename); language8.language_nr = 8; language8.branding_nr = 23; language8.portal = "family"; _languageBox.push(language8); language9 = new languageItem(); language9.url1 = ((("http://www.juegos.com/moregames/?utm_medium=brandedgames_external&utm_campaign=" + gamename) + "&utm_source=") + hostingdomain); language9.url2 = ("http://www.juegos.com/moregames/?utm_medium=brandedgames_internal&utm_campaign=" + gamename); language9.language_nr = 9; language9.branding_nr = 24; language9.portal = "family"; _languageBox.push(language9); language10 = new languageItem(); language10.url1 = ((("http://www.ojogos.com.br/moregames/?utm_medium=brandedgames_external&utm_campaign=" + gamename) + "&utm_source=") + hostingdomain); language10.url2 = ("http://www.ojogos.com.br/moregames/?utm_medium=brandedgames_internal&utm_campaign=" + gamename); language10.language_nr = 11; language10.branding_nr = 25; language10.portal = "family"; _languageBox.push(language10); language11 = new languageItem(); language11.url1 = ((("http://www.games.co.id/moregames/?utm_medium=brandedgames_external&utm_campaign=" + gamename) + "&utm_source=") + hostingdomain); language11.url2 = ("http://www.games.co.id/moregames/?utm_medium=brandedgames_internal&utm_campaign=" + gamename); language11.language_nr = 13; language11.branding_nr = 13; language11.portal = "tweens"; _languageBox.push(language11); language12 = new languageItem(); language12.url1 = ((("http://www.ourgames.ru/moregames/?utm_medium=brandedgames_external&utm_campaign=" + gamename) + "&utm_source=") + hostingdomain); language12.url2 = ("http://www.ourgames.ru/moregames/?utm_medium=brandedgames_internal&utm_campaign=" + gamename); language12.language_nr = 12; language12.branding_nr = 26; language12.portal = "family"; _languageBox.push(language12); language13 = new languageItem(); language13.url1 = ((("http://www.games.co.uk/moregames/?utm_medium=brandedgames_external&utm_campaign=" + gamename) + "&utm_source=") + hostingdomain); language13.url2 = ("http://www.games.co.uk/moregames/?utm_medium=brandedgames_internal&utm_campaign=" + gamename); language13.language_nr = 16; language13.branding_nr = 27; language13.portal = "family"; _languageBox.push(language13); language14 = new languageItem(); language14.url1 = ((("http://www.game.co.in/moregames/?utm_medium=brandedgames_external&utm_campaign=" + gamename) + "&utm_source=") + hostingdomain); language14.url2 = ("http://www.game.co.in/moregames/?utm_medium=brandedgames_internal&utm_campaign=" + gamename); language14.language_nr = 16; language14.branding_nr = 12; language14.portal = "tweens"; _languageBox.push(language14); language15 = new languageItem(); language15.url1 = ((("http://www.game.com.my/moregames/?utm_medium=brandedgames_external&utm_campaign=" + gamename) + "&utm_source=") + hostingdomain); language15.url2 = ("http://www.game.com.my/moregames/?utm_medium=brandedgames_internal&utm_campaign=" + gamename); language15.language_nr = 15; language15.branding_nr = 16; language15.portal = "tweens"; _languageBox.push(language15); language16 = new languageItem(); language16.url1 = ((("http://www.ojogos.pt/moregames/?utm_medium=brandedgames_external&utm_campaign=" + gamename) + "&utm_source=") + hostingdomain); language16.url2 = ("http://www.ojogos.pt/moregames/?utm_medium=brandedgames_internal&utm_campaign=" + gamename); language16.language_nr = 10; language16.branding_nr = 42; language16.portal = "family"; _languageBox.push(language16); language17 = new languageItem(); language17.url1 = ((("http://www.egames.jp/moregames/?utm_medium=brandedgames_external&utm_campaign=" + gamename) + "&utm_source=") + hostingdomain); language17.url2 = ("http://www.egames.jp/moregames/?utm_medium=brandedgames_internal&utm_campaign=" + gamename); language17.language_nr = 17; language17.branding_nr = 44; language17.portal = "tweens"; _languageBox.push(language17); language18 = new languageItem(); language18.url1 = ((("http://www.asoyun.com/moregames/?utm_medium=brandedgames_external&utm_campaign=" + gamename) + "&utm_source=") + hostingdomain); language18.url2 = ("http://www.asoyun.com/moregames/?utm_medium=brandedgames_internal&utm_campaign=" + gamename); language18.language_nr = 14; language18.branding_nr = 15; language18.portal = "tweens"; _languageBox.push(language18); SpillGroupUrl.push("localhost"); SpillGroupUrl.push("www8.agame.com"); if ((((((languageVersion is Number)) || ((languageVersion is uint)))) || ((languageVersion is int)))){ _languageNum = (Number(languageVersion) - 1); }; } public static function get url1():String{ var _local1:int; _local1 = 0; while (_local1 < SpillGroupUrl.length) { if (localConnection.domain == SpillGroupUrl[_local1]){ return (_languageBox[_languageNum].url2); }; _local1++; }; return (_languageBox[_languageNum].url1); } public static function get branding_nr():String{ return (_languageBox[_languageNum].branding_nr); } } }//package class languageItem { public var url1:String; public var url2:String; public var branding_nr:int; public var language_nr:int; public var portal:String; private function languageItem(){ } }
Section 100
//Levels (Levels) package { public class Levels { public var timer:Number;// = 10000 public var wallsCount:Number;// = 1 public function Levels(){ wallsCount = 1; timer = 10000; super(); } public function getLevel(_arg1:Number):Array{ timer = 10000; switch (_arg1){ case 1: timer = 50000; wallsCount = 1; return ([[0, 0, 0], [1, 0, 0], [-1, 0, 0]]); case 2: wallsCount = 1; return ([[0, 0, 0], [-1, 0, 0], [0, 0, 1]]); case 3: wallsCount = 1; return ([[0, 0, 0], [1, 1, 0], [-1, -1, 0], [-1, 1, 0], [1, -1, 0], [0, 1, -1]]); case 4: wallsCount = 2; return ([[0, -1, 0], [-1, 1, 0], [-1, -1, 1], [0, -1, -1]]); case 5: wallsCount = 2; return ([[0, 1, 0], [1, 0, 1], [1, 0, -1], [1, -1, 0]]); case 6: wallsCount = 2; return ([[1, 0, 0], [-1, 0, -1], [0, -1, -1], [0, -1, 0]]); case 7: wallsCount = 2; return ([[0, -1, 0], [1, 0, 1], [-1, 0, 1], [0, 1, -1], [0, 0, 1]]); case 8: wallsCount = 3; return ([[-1, 1, 0], [1, 0, -1], [1, 1, 1], [-1, 0, 0], [0, -1, -1], [1, -1, 1]]); case 9: wallsCount = 3; return ([[-1, -1, 1], [1, 1, 1], [-1, -1, -1], [1, 0, 0], [-1, 0, -1], [0, 1, 0]]); case 10: wallsCount = 3; return ([[-1, -1, 0], [-1, 0, 0], [-1, 1, 0], [1, 1, 0], [1, -1, 0], [-1, 0, 1], [1, -1, -1]]); case 11: wallsCount = 3; return ([[0, 0, -1], [1, 0, 0], [0, 0, 1], [0, 1, 1], [-1, 1, 0], [1, 1, 0], [1, -1, 1]]); case 12: wallsCount = 3; return ([[0, -1, 2], [1, -1, 2], [0, 0, 0], [-1, 0, 1], [-1, -1, -1]]); case 13: wallsCount = 4; return ([[0, 1, -1], [-1, -1, 0], [-1, 0, 0], [1, 0, -1], [2, 0, -1], [-1, 2, 1]]); case 14: wallsCount = 4; return ([[1, 0, 1], [0, -1, 0], [-1, 2, 0], [-1, 2, -1], [2, 2, -1], [1, 2, 0]]); case 15: wallsCount = 4; return ([[0, 0, 1], [2, 2, 1], [0, 2, 0], [-1, 1, 0], [-1, 2, 1], [-1, 1, 2]]); case 16: wallsCount = 4; return ([[2, -1, 2], [2, 0, 0], [2, 2, 0], [-1, -1, 1], [1, 1, 0], [1, 1, -1], [2, 1, 0]]); case 17: wallsCount = 4; return ([[1, 1, 0], [1, 1, -1], [1, 1, 2], [1, 2, 2], [0, -1, -1], [0, 0, -1], [-1, -1, -1]]); case 18: wallsCount = 5; return ([[0, 0, 0], [2, 0, 2], [2, 0, 1], [1, 2, -1], [-1, 0, 0], [1, 1, 1], [0, -1, 1]]); case 19: wallsCount = 5; return ([[1, -1, 2], [1, 1, 2], [0, -1, 0], [1, 2, -1], [0, 2, 0], [2, -1, 0], [2, 0, -1]]); case 20: wallsCount = 5; return ([[1, 0, 1], [1, -1, -2], [2, -1, 2], [0, -1, -2], [-2, 1, 0]]); case 21: wallsCount = 5; return ([[-1, -1, 1], [2, 1, 1], [0, -1, 0], [0, 2, 1], [1, -1, 1], [-1, 1, -1]]); case 22: wallsCount = 6; return ([[-1, 1, 2], [-2, -1, 1], [-1, 2, 0], [-2, -2, -1], [1, 2, -1], [-2, 0, -1]]); case 23: wallsCount = 6; return ([[0, 2, 2], [-2, -1, 1], [2, -2, -1], [-1, 0, -2], [1, 2, 0], [1, 0, -1]]); case 24: wallsCount = 6; return ([[2, 2, 1], [-1, -2, -1], [1, 0, -1], [0, -2, -2], [0, 2, -1], [2, 2, 0]]); case 25: wallsCount = 6; return ([[1, 0, -2], [1, -1, -2], [-1, 0, 1], [-2, 0, 1], [0, 0, -1], [0, 0, -2]]); case 26: wallsCount = 7; return ([[2, 0, 1], [-2, -2, 0], [-2, 0, 2], [1, 1, 2], [-2, -1, -2], [-2, -1, 1], [-1, 2, -1]]); case 27: wallsCount = 7; return ([[2, -1, -2], [-1, 1, -1], [2, 2, 2], [0, 1, -2], [2, -1, 1], [0, 0, -1], [-1, -1, -1]]); case 28: wallsCount = 7; return ([[-2, 0, 0], [0, 1, 1], [-1, 0, 2], [1, 2, -2], [2, 0, 1], [2, 2, 1], [0, -2, 0]]); case 29: wallsCount = 7; return ([[-2, 0, -1], [-1, -1, -1], [-1, -2, -1], [-2, -2, 2], [-2, -1, -2], [2, 1, 1], [-1, -2, 1]]); case 30: wallsCount = 8; return ([[1, 0, 1], [-2, 0, 0], [1, 0, 0], [-2, 0, 1], [0, 2, 0], [-2, -1, -1], [1, 1, 1]]); case 31: wallsCount = 8; return ([[-1, 0, 2], [-1, 1, 1], [-2, 0, 0], [0, -2, 0], [-1, -2, 0], [-1, -2, 2], [-1, 0, 1]]); case 32: wallsCount = 8; return ([[0, -2, -1], [0, 0, 1], [1, -1, -2], [-1, 2, 2], [-1, 2, 0], [2, 1, -2], [-2, 2, -2]]); case 33: wallsCount = 8; return ([[0, 2, 0], [-1, 2, 2], [1, 2, -2], [0, 2, -2], [-2, 2, 0], [2, 2, -1], [0, 0, -1]]); case 34: wallsCount = 8; return ([[2, 1, -1], [1, 0, 0], [-1, 1, -1], [1, 0, 1], [2, 1, 0], [-1, 0, -2], [-2, 0, 1]]); case 35: wallsCount = 9; return ([[-1, -2, -2], [-2, -1, -2], [0, -2, -1], [1, 2, -1], [2, 2, -2], [1, -1, -2], [0, -1, -2]]); case 36: wallsCount = 9; return ([[1, 0, 1], [1, 2, 1], [0, 0, -1], [-2, 1, 1], [2, 2, -2], [-2, 2, 2], [-2, 0, 0], [0, -2, 2]]); case 37: wallsCount = 9; return ([[1, 0, -2], [0, 0, 2], [0, -2, -1], [-1, -1, -2], [-2, 1, 0], [0, 0, -2], [-2, -1, -2], [0, -1, 0]]); case 38: wallsCount = 9; return ([[1, 0, 1], [2, 1, -2], [1, 1, -1], [0, -2, -1], [0, -1, 1], [1, -1, -1], [-2, 1, -2], [-1, 1, -1]]); case 39: wallsCount = 10; return ([[1, 1, -1], [0, -2, 1], [-2, -1, 2], [-1, 2, 2], [2, 1, -1], [-2, 1, 1], [-2, -2, -2], [1, -1, 0]]); case 40: wallsCount = 1; return ([[0, -1, 0], [-2, 1, 2], [2, 2, -2], [0, 2, 1], [2, -2, -2], [-2, -2, 0], [0, 1, 0], [0, 0, 0]]); }; return ([]); } } }//package
Section 101
//lose (lose) package { import flash.media.*; public dynamic class lose extends Sound { } }//package
Section 102
//MochiAd (MochiAd) package { import flash.display.*; import flash.events.*; import flash.utils.*; import flash.net.*; import flash.system.*; public class MochiAd { public static function getVersion():String{ return ("2.7"); } public static function showClickAwayAd(_arg1:Object):void{ var DEFAULTS:Object; var clip:Object; var ad_timeout:Number; var mc:MovieClip; var wh:Array; var w:Number; var h:Number; var chk:MovieClip; var sendHostProgress:Boolean; var options = _arg1; DEFAULTS = {ad_timeout:2000, regpt:"o", method:"showClickAwayAd", res:"300x250", no_bg:true, ad_started:function ():void{ }, ad_finished:function ():void{ }, ad_loaded:function (_arg1:Number, _arg2:Number):void{ }, ad_failed:function ():void{ trace("[MochiAd] Couldn't load an ad, make sure your game's local security sandbox is configured for Access Network Only and that you are not using ad blocking software"); }, ad_skipped:function ():void{ }}; options = MochiAd._parseOptions(options, DEFAULTS); clip = options.clip; ad_timeout = options.ad_timeout; delete options.ad_timeout; if (!MochiAd.load(options)){ options.ad_failed(); options.ad_finished(); return; }; options.ad_started(); mc = clip._mochiad; mc["onUnload"] = function ():void{ MochiAd._cleanup(mc); options.ad_finished(); }; wh = MochiAd._getRes(options, clip); w = wh[0]; h = wh[1]; mc.x = (w * 0.5); mc.y = (h * 0.5); chk = createEmptyMovieClip(mc, "_mochiad_wait", 3); chk.ad_timeout = ad_timeout; chk.started = getTimer(); chk.showing = false; mc.unloadAd = function ():void{ MochiAd.unload(clip); }; mc.adLoaded = options.ad_loaded; mc.adSkipped = options.ad_skipped; mc.rpc = function (_arg1:Number, _arg2:Object):void{ MochiAd.rpc(clip, _arg1, _arg2); }; sendHostProgress = false; mc.regContLC = function (_arg1:String):void{ mc._containerLCName = _arg1; }; chk["onEnterFrame"] = function ():void{ var _local1:Object; var _local2:Number; var _local3:Boolean; var _local4:Number; if (!this.parent){ delete this.onEnterFrame; return; }; _local1 = this.parent._mochiad_ctr; _local2 = (getTimer() - this.started); _local3 = false; if (!chk.showing){ _local4 = this.parent._mochiad_ctr.contentLoaderInfo.bytesTotal; if (_local4 > 0){ chk.showing = true; _local3 = true; chk.started = getTimer(); } else { if (_local2 > chk.ad_timeout){ options.ad_failed(); _local3 = true; }; }; }; if (this.root == null){ _local3 = true; }; if (_local3){ delete this.onEnterFrame; }; }; doOnEnterFrame(chk); } public static function _isNetworkAvailable():Boolean{ return (!((Security.sandboxType == "localWithFile"))); } public static function _allowDomains(_arg1:String):String{ var _local2:String; _local2 = _arg1.split("/")[2].split(":")[0]; Security.allowDomain("*"); Security.allowDomain(_local2); Security.allowInsecureDomain("*"); Security.allowInsecureDomain(_local2); return (_local2); } public static function unload(_arg1:Object):Boolean{ if (((_arg1.clip) && (_arg1.clip._mochiad))){ _arg1 = _arg1.clip; }; if (_arg1.origFrameRate != undefined){ _arg1.stage.frameRate = _arg1.origFrameRate; }; if (!_arg1._mochiad){ return (false); }; if (_arg1._mochiad._containerLCName != undefined){ _arg1._mochiad.lc.send(_arg1._mochiad._containerLCName, "notify", {id:"unload"}); }; if (_arg1._mochiad.onUnload){ _arg1._mochiad.onUnload(); }; delete _arg1._mochiad_loaded; delete _arg1._mochiad; return (true); } public static function showInterLevelAd(_arg1:Object):void{ var DEFAULTS:Object; var clip:Object; var ad_msec:Number; var ad_timeout:Number; var fadeout_time:Number; var mc:MovieClip; var wh:Array; var w:Number; var h:Number; var chk:MovieClip; var options = _arg1; DEFAULTS = {ad_timeout:2000, fadeout_time:250, regpt:"o", method:"showTimedAd", ad_started:function ():void{ if ((this.clip is MovieClip)){ this.clip.stop(); } else { throw (new Error("MochiAd.showInterLevelAd requires a clip that is a MovieClip or is an instance of a class that extends MovieClip. If your clip is a Sprite, then you must provide custom ad_started and ad_finished handlers.")); }; }, ad_finished:function ():void{ if ((this.clip is MovieClip)){ this.clip.play(); } else { throw (new Error("MochiAd.showInterLevelAd requires a clip that is a MovieClip or is an instance of a class that extends MovieClip. If your clip is a Sprite, then you must provide custom ad_started and ad_finished handlers.")); }; }, ad_loaded:function (_arg1:Number, _arg2:Number):void{ }, ad_failed:function ():void{ trace("[MochiAd] Couldn't load an ad, make sure your game's local security sandbox is configured for Access Network Only and that you are not using ad blocking software"); }, ad_skipped:function ():void{ }}; options = MochiAd._parseOptions(options, DEFAULTS); clip = options.clip; ad_msec = 11000; ad_timeout = options.ad_timeout; delete options.ad_timeout; fadeout_time = options.fadeout_time; delete options.fadeout_time; if (!MochiAd.load(options)){ options.ad_failed(); options.ad_finished(); return; }; options.ad_started(); mc = clip._mochiad; mc["onUnload"] = function ():void{ MochiAd._cleanup(mc); options.ad_finished(); }; wh = MochiAd._getRes(options, clip); w = wh[0]; h = wh[1]; mc.x = (w * 0.5); mc.y = (h * 0.5); chk = createEmptyMovieClip(mc, "_mochiad_wait", 3); chk.ad_msec = ad_msec; chk.ad_timeout = ad_timeout; chk.started = getTimer(); chk.showing = false; chk.fadeout_time = fadeout_time; chk.fadeFunction = function ():void{ var _local1:Number; if (!this.parent){ delete this.onEnterFrame; delete this.fadeFunction; return; }; _local1 = (100 * (1 - ((getTimer() - this.fadeout_start) / this.fadeout_time))); if (_local1 > 0){ this.parent.alpha = (_local1 * 0.01); } else { MochiAd.unload(clip); delete this["onEnterFrame"]; }; }; mc.unloadAd = function ():void{ MochiAd.unload(clip); }; mc.adLoaded = options.ad_loaded; mc.adSkipped = options.ad_skipped; mc.adjustProgress = function (_arg1:Number):void{ var _local2:Object; _local2 = mc._mochiad_wait; _local2.server_control = true; _local2.showing = true; _local2.started = getTimer(); _local2.ad_msec = (_arg1 - 250); }; mc.rpc = function (_arg1:Number, _arg2:Object):void{ MochiAd.rpc(clip, _arg1, _arg2); }; chk["onEnterFrame"] = function ():void{ var _local1:Object; var _local2:Number; var _local3:Boolean; var _local4:Number; if (!this.parent){ delete this.onEnterFrame; delete this.fadeFunction; return; }; _local1 = this.parent._mochiad_ctr; _local2 = (getTimer() - this.started); _local3 = false; if (!chk.showing){ _local4 = this.parent._mochiad_ctr.contentLoaderInfo.bytesTotal; if (_local4 > 0){ chk.showing = true; chk.started = getTimer(); MochiAd.adShowing(clip); } else { if (_local2 > chk.ad_timeout){ options.ad_failed(); _local3 = true; }; }; }; if (_local2 > chk.ad_msec){ _local3 = true; }; if (_local3){ if (this.server_control){ delete this.onEnterFrame; } else { this.fadeout_start = getTimer(); this.onEnterFrame = this.fadeFunction; }; }; }; doOnEnterFrame(chk); } public static function _parseOptions(_arg1:Object, _arg2:Object):Object{ var _local3:Object; var _local4:String; var _local5:Array; var _local6:Number; var _local7:Array; _local3 = {}; for (_local4 in _arg2) { _local3[_local4] = _arg2[_local4]; }; if (_arg1){ for (_local4 in _arg1) { _local3[_local4] = _arg1[_local4]; }; }; if (_local3.clip == undefined){ throw (new Error("MochiAd is missing the 'clip' parameter. This should be a MovieClip, Sprite or an instance of a class that extends MovieClip or Sprite.")); }; _arg1 = _local3.clip.loaderInfo.parameters.mochiad_options; if (_arg1){ _local5 = _arg1.split("&"); _local6 = 0; while (_local6 < _local5.length) { _local7 = _local5[_local6].split("="); _local3[unescape(_local7[0])] = unescape(_local7[1]); _local6++; }; }; if (_local3.id == "test"){ trace("[MochiAd] WARNING: Using the MochiAds test identifier, make sure to use the code from your dashboard, not this example!"); }; return (_local3); } public static function _cleanup(_arg1:Object):void{ var idx:Number; var k:String; var lc:LocalConnection; var f:Function; var mc = _arg1; if (("lc" in mc)){ lc = mc.lc; f = function ():void{ try { lc.client = null; lc.close(); } catch(e:Error) { }; }; setTimeout(f, 0); }; idx = DisplayObjectContainer(mc).numChildren; while (idx > 0) { idx = (idx - 1); DisplayObjectContainer(mc).removeChildAt(idx); }; for (k in mc) { delete mc[k]; }; } public static function load(_arg1:Object):MovieClip{ var DEFAULTS:Object; var clip:Object; var depth:Number; var mc:MovieClip; var wh:Array; var lv:URLVariables; var k:String; var server:String; var hostname:String; var lc:LocalConnection; var name:String; var loader:Loader; var g:Function; var req:URLRequest; var v:Object; var options = _arg1; DEFAULTS = {server:"http://x.mochiads.com/srv/1/", method:"load", depth:10333, id:"_UNKNOWN_"}; options = MochiAd._parseOptions(options, DEFAULTS); options.swfv = 9; options.mav = MochiAd.getVersion(); clip = options.clip; if (!MochiAd._isNetworkAvailable()){ return (null); }; try { if (clip._mochiad_loaded){ return (null); }; } catch(e:Error) { throw (new Error("MochiAd requires a clip that is an instance of a dynamic class. If your class extends Sprite or MovieClip, you must make it dynamic.")); }; depth = options.depth; delete options.depth; mc = createEmptyMovieClip(clip, "_mochiad", depth); wh = MochiAd._getRes(options, clip); options.res = ((wh[0] + "x") + wh[1]); options.server = (options.server + options.id); delete options.id; clip._mochiad_loaded = true; if (clip.loaderInfo.loaderURL.indexOf("http") == 0){ options.as3_swf = clip.loaderInfo.loaderURL; }; lv = new URLVariables(); for (k in options) { v = options[k]; if (!(v is Function)){ lv[k] = v; }; }; server = lv.server; delete lv.server; hostname = _allowDomains(server); lc = new LocalConnection(); lc.client = mc; name = ["", Math.floor(new Date().getTime()), Math.floor((Math.random() * 999999))].join("_"); lc.allowDomain("*", "localhost"); lc.allowInsecureDomain("*", "localhost"); lc.connect(name); mc.lc = lc; mc.lcName = name; lv.lc = name; lv.st = getTimer(); loader = new Loader(); g = function (_arg1:Object):void{ _arg1.target.removeEventListener(_arg1.type, arguments.callee); MochiAd.unload(clip); }; loader.contentLoaderInfo.addEventListener(Event.UNLOAD, g); req = new URLRequest(((server + ".swf?cacheBust=") + new Date().getTime())); req.contentType = "application/x-www-form-urlencoded"; req.method = URLRequestMethod.POST; req.data = lv; loader.load(req); mc.addChild(loader); mc._mochiad_ctr = loader; return (mc); } public static function runMethod(_arg1:Object, _arg2:String, _arg3:Array):Object{ var _local4:Array; var _local5:Number; _local4 = _arg2.split("."); _local5 = 0; while (_local5 < (_local4.length - 1)) { if ((((_arg1[_local4[_local5]] == undefined)) || ((_arg1[_local4[_local5]] == null)))){ return (undefined); }; _arg1 = _arg1[_local4[_local5]]; _local5++; }; if (typeof(_arg1[_local4[_local5]]) == "function"){ return (_arg1[_local4[_local5]].apply(_arg1, _arg3)); }; return (undefined); } public static function createEmptyMovieClip(_arg1:Object, _arg2:String, _arg3:Number):MovieClip{ var _local4:MovieClip; _local4 = new MovieClip(); if (((false) && (_arg3))){ _arg1.addChildAt(_local4, _arg3); } else { _arg1.addChild(_local4); }; _arg1[_arg2] = _local4; _local4["_name"] = _arg2; return (_local4); } public static function _getRes(_arg1:Object, _arg2:Object):Array{ var _local3:Object; var _local4:Number; var _local5:Number; var _local6:Array; _local3 = _arg2.getBounds(_arg2.root); _local4 = 0; _local5 = 0; if (typeof(_arg1.res) != "undefined"){ _local6 = _arg1.res.split("x"); _local4 = parseFloat(_local6[0]); _local5 = parseFloat(_local6[1]); } else { _local4 = (_local3.xMax - _local3.xMin); _local5 = (_local3.yMax - _local3.yMin); }; if ((((_local4 == 0)) || ((_local5 == 0)))){ _local4 = _arg2.stage.stageWidth; _local5 = _arg2.stage.stageHeight; }; return ([_local4, _local5]); } public static function adShowing(_arg1:Object):void{ _arg1.origFrameRate = _arg1.stage.frameRate; _arg1.stage.frameRate = 30; } public static function getValue(_arg1:Object, _arg2:String):Object{ var _local3:Array; var _local4:Number; _local3 = _arg2.split("."); _local4 = 0; while (_local4 < (_local3.length - 1)) { if ((((_arg1[_local3[_local4]] == undefined)) || ((_arg1[_local3[_local4]] == null)))){ return (undefined); }; _arg1 = _arg1[_local3[_local4]]; _local4++; }; return (_arg1[_local3[_local4]]); } public static function rpc(_arg1:Object, _arg2:Number, _arg3:Object):void{ var _local4:Object; var _local5:Object; switch (_arg3.id){ case "setValue": MochiAd.setValue(_arg1, _arg3.objectName, _arg3.value); break; case "getValue": _local4 = MochiAd.getValue(_arg1, _arg3.objectName); _arg1._mochiad.lc.send(_arg1._mochiad._containerLCName, "rpcResult", _arg2, _local4); break; case "runMethod": _local5 = MochiAd.runMethod(_arg1, _arg3.method, _arg3.args); _arg1._mochiad.lc.send(_arg1._mochiad._containerLCName, "rpcResult", _arg2, _local5); break; default: trace(("[mochiads rpc] unknown rpc id: " + _arg3.id)); }; } public static function setValue(_arg1:Object, _arg2:String, _arg3:Object):void{ var _local4:Array; var _local5:Number; _local4 = _arg2.split("."); _local5 = 0; while (_local5 < (_local4.length - 1)) { if ((((_arg1[_local4[_local5]] == undefined)) || ((_arg1[_local4[_local5]] == null)))){ return; }; _arg1 = _arg1[_local4[_local5]]; _local5++; }; _arg1[_local4[_local5]] = _arg3; } public static function showPreGameAd(_arg1:Object):void{ var DEFAULTS:Object; var clip:Object; var ad_msec:Number; var ad_timeout:Number; var fadeout_time:Number; var mc:MovieClip; var wh:Array; var w:Number; var h:Number; var chk:MovieClip; var bar:MovieClip; var bar_color:Number; var bar_background:Number; var bar_outline:Number; var backing_mc:MovieClip; var backing:Object; var inside_mc:MovieClip; var inside:Object; var outline_mc:MovieClip; var outline:Object; var complete:Boolean; var unloaded:Boolean; var f:Function; var sendHostProgress:Boolean; var fn:Function; var r:MovieClip; var options = _arg1; DEFAULTS = {ad_timeout:3000, fadeout_time:250, regpt:"o", method:"showPreloaderAd", color:0xFF8A00, background:16777161, outline:13994812, no_progress_bar:false, ad_started:function ():void{ if ((this.clip is MovieClip)){ this.clip.stop(); } else { throw (new Error("MochiAd.showPreGameAd requires a clip that is a MovieClip or is an instance of a class that extends MovieClip. If your clip is a Sprite, then you must provide custom ad_started and ad_finished handlers.")); }; }, ad_finished:function ():void{ if ((this.clip is MovieClip)){ this.clip.play(); } else { throw (new Error("MochiAd.showPreGameAd requires a clip that is a MovieClip or is an instance of a class that extends MovieClip. If your clip is a Sprite, then you must provide custom ad_started and ad_finished handlers.")); }; }, ad_loaded:function (_arg1:Number, _arg2:Number):void{ }, ad_failed:function ():void{ trace("[MochiAd] Couldn't load an ad, make sure your game's local security sandbox is configured for Access Network Only and that you are not using ad blocking software"); }, ad_skipped:function ():void{ }, ad_progress:function (_arg1:Number):void{ }}; options = MochiAd._parseOptions(options, DEFAULTS); if ("c862232051e0a94e1c3609b3916ddb17".substr(0) == "dfeada81ac97cde83665f81c12da7def"){ options.ad_started(); fn = function ():void{ options.ad_finished(); }; setTimeout(fn, 100); return; }; clip = options.clip; ad_msec = 11000; ad_timeout = options.ad_timeout; delete options.ad_timeout; fadeout_time = options.fadeout_time; delete options.fadeout_time; if (!MochiAd.load(options)){ options.ad_failed(); options.ad_finished(); return; }; options.ad_started(); mc = clip._mochiad; mc["onUnload"] = function ():void{ var fn:Function; MochiAd._cleanup(mc); fn = function ():void{ options.ad_finished(); }; setTimeout(fn, 100); }; wh = MochiAd._getRes(options, clip); w = wh[0]; h = wh[1]; mc.x = (w * 0.5); mc.y = (h * 0.5); chk = createEmptyMovieClip(mc, "_mochiad_wait", 3); chk.x = (w * -0.5); chk.y = (h * -0.5); bar = createEmptyMovieClip(chk, "_mochiad_bar", 4); if (options.no_progress_bar){ bar.visible = false; delete options.no_progress_bar; } else { bar.x = 10; bar.y = (h - 20); }; bar_color = options.color; delete options.color; bar_background = options.background; delete options.background; bar_outline = options.outline; delete options.outline; backing_mc = createEmptyMovieClip(bar, "_outline", 1); backing = backing_mc.graphics; backing.beginFill(bar_background); backing.moveTo(0, 0); backing.lineTo((w - 20), 0); backing.lineTo((w - 20), 10); backing.lineTo(0, 10); backing.lineTo(0, 0); backing.endFill(); inside_mc = createEmptyMovieClip(bar, "_inside", 2); inside = inside_mc.graphics; inside.beginFill(bar_color); inside.moveTo(0, 0); inside.lineTo((w - 20), 0); inside.lineTo((w - 20), 10); inside.lineTo(0, 10); inside.lineTo(0, 0); inside.endFill(); inside_mc.scaleX = 0; outline_mc = createEmptyMovieClip(bar, "_outline", 3); outline = outline_mc.graphics; outline.lineStyle(0, bar_outline, 100); outline.moveTo(0, 0); outline.lineTo((w - 20), 0); outline.lineTo((w - 20), 10); outline.lineTo(0, 10); outline.lineTo(0, 0); chk.ad_msec = ad_msec; chk.ad_timeout = ad_timeout; chk.started = getTimer(); chk.showing = false; chk.last_pcnt = 0; chk.fadeout_time = fadeout_time; chk.fadeFunction = function ():void{ var _local1:Number; _local1 = (100 * (1 - ((getTimer() - this.fadeout_start) / this.fadeout_time))); if (_local1 > 0){ this.parent.alpha = (_local1 * 0.01); } else { MochiAd.unload(clip); delete this["onEnterFrame"]; }; }; complete = false; unloaded = false; f = function (_arg1:Event):void{ _arg1.target.removeEventListener(_arg1.type, arguments.callee); complete = true; if (unloaded){ MochiAd.unload(clip); }; }; clip.loaderInfo.addEventListener(Event.COMPLETE, f); if ((clip.root is MovieClip)){ r = (clip.root as MovieClip); if (r.framesLoaded >= r.totalFrames){ complete = true; }; }; mc.unloadAd = function ():void{ unloaded = true; if (complete){ MochiAd.unload(clip); }; }; mc.adLoaded = options.ad_loaded; mc.adSkipped = options.ad_skipped; mc.adjustProgress = function (_arg1:Number):void{ var _local2:Object; _local2 = mc._mochiad_wait; _local2.server_control = true; _local2.showing = true; _local2.started = getTimer(); _local2.ad_msec = _arg1; }; mc.rpc = function (_arg1:Number, _arg2:Object):void{ MochiAd.rpc(clip, _arg1, _arg2); }; mc.rpcTestFn = function (_arg1:String):Object{ trace(("[MOCHIAD rpcTestFn] " + _arg1)); return (_arg1); }; mc.regContLC = function (_arg1:String):void{ mc._containerLCName = _arg1; }; sendHostProgress = false; mc.sendHostLoadProgress = function (_arg1:String):void{ sendHostProgress = true; }; chk["onEnterFrame"] = function ():void{ var _local1:Object; var _local2:Object; var _local3:Number; var _local4:Boolean; var _local5:Number; var _local6:Number; var _local7:Number; var _local8:Number; var _local9:Object; var _local10:Number; var _local11:Number; if (((!(this.parent)) || (!(this.parent.parent)))){ delete this["onEnterFrame"]; return; }; _local1 = this.parent.parent.root; _local2 = this.parent._mochiad_ctr; _local3 = (getTimer() - this.started); _local4 = false; _local5 = _local1.loaderInfo.bytesTotal; _local6 = _local1.loaderInfo.bytesLoaded; if (complete){ _local6 = Math.max(1, _local6); _local5 = _local6; }; _local7 = ((100 * _local6) / _local5); _local8 = ((100 * _local3) / chk.ad_msec); _local9 = this._mochiad_bar._inside; _local10 = Math.min(100, Math.min(((_local7) || (0)), _local8)); _local10 = Math.max(this.last_pcnt, _local10); this.last_pcnt = _local10; _local9.scaleX = (_local10 * 0.01); options.ad_progress(_local10); if (sendHostProgress){ clip._mochiad.lc.send(clip._mochiad._containerLCName, "notify", {id:"hostLoadPcnt", pcnt:_local7}); if (_local7 == 100){ sendHostProgress = false; }; }; if (!chk.showing){ _local11 = this.parent._mochiad_ctr.contentLoaderInfo.bytesTotal; if (_local11 > 0){ chk.showing = true; chk.started = getTimer(); MochiAd.adShowing(clip); } else { if ((((_local3 > chk.ad_timeout)) && ((_local7 == 100)))){ options.ad_failed(); _local4 = true; }; }; }; if (_local3 > chk.ad_msec){ _local4 = true; }; if (((complete) && (_local4))){ if (this.server_control){ delete this.onEnterFrame; } else { this.fadeout_start = getTimer(); this.onEnterFrame = chk.fadeFunction; }; }; }; doOnEnterFrame(chk); } public static function showPreloaderAd(_arg1:Object):void{ trace("[MochiAd] DEPRECATED: showPreloaderAd was renamed to showPreGameAd in 2.0"); MochiAd.showPreGameAd(_arg1); } public static function showTimedAd(_arg1:Object):void{ trace("[MochiAd] DEPRECATED: showTimedAd was renamed to showInterLevelAd in 2.0"); MochiAd.showInterLevelAd(_arg1); } public static function doOnEnterFrame(_arg1:MovieClip):void{ var f:Function; var mc = _arg1; f = function (_arg1:Object):void{ if (((("onEnterFrame" in mc)) && (mc.onEnterFrame))){ mc.onEnterFrame(); } else { _arg1.target.removeEventListener(_arg1.type, arguments.callee); }; }; mc.addEventListener(Event.ENTER_FRAME, f); } } }//package
Section 103
//move (move) package { import flash.media.*; public dynamic class move extends Sound { } }//package
Section 104
//SoundController (SoundController) package { import flash.media.*; import flash.utils.*; public class SoundController { public var _musicVolume:Number;// = 50 private var channelBgMisic:SoundChannel; private var _volume:Number;// = 100 public static var __instance:SoundController; public function SoundController(_arg1:SingletonEnforcer){ _volume = 100; _musicVolume = 50; super(); } public function playBackground(_arg1:String):void{ var v:Number; var soundClass:Class; var soundInstance:Sound; var transform:SoundTransform; var soundName = _arg1; v = musicVolume; try { soundClass = (getDefinitionByName(soundName) as Class); soundInstance = new (soundClass); channelBgMisic = soundInstance.play(0, 9999); transform = channelBgMisic.soundTransform; transform.volume = (v / 100); channelBgMisic.soundTransform = transform; } catch(e:Error) { }; } public function stopBackground():void{ try { channelBgMisic.stop(); } catch(e:Error) { }; } public function set volume(_arg1:Number):void{ _volume = _arg1; } public function get volume():Number{ return (_volume); } public function playSound(_arg1:String):void{ var v:Number; var soundClass:Class; var soundInstance:Sound; var channel:SoundChannel; var transform:SoundTransform; var soundName = _arg1; v = volume; try { soundClass = (getDefinitionByName(soundName) as Class); soundInstance = new (soundClass); channel = soundInstance.play(); transform = channel.soundTransform; transform.volume = (v / 100); channel.soundTransform = transform; } catch(e:Error) { }; } public function set musicVolume(_arg1:Number):void{ var _local2:SoundTransform; _musicVolume = _arg1; if (channelBgMisic){ _local2 = channelBgMisic.soundTransform; _local2.volume = (_arg1 / 100); channelBgMisic.soundTransform = _local2; }; } public function get musicVolume():Number{ return (_musicVolume); } public static function getInstance():SoundController{ if (__instance == null){ __instance = new SoundController(new SingletonEnforcer()); }; return (__instance); } } }//package class SingletonEnforcer { private function SingletonEnforcer(){ } }
Section 105
//startlevel (startlevel) package { import flash.media.*; public dynamic class startlevel extends Sound { } }//package
Section 106
//ThrowWall (ThrowWall) package { import sandy.materials.*; import sandy.materials.attributes.*; import sandy.core.*; import sandy.core.data.*; import flash.display.*; import sandy.core.scenegraph.*; import ascb.util.*; import gs.*; import flash.events.*; import flash.geom.*; import flash.text.*; import flash.filters.*; import ascb.mochi.*; import fl.motion.easing.*; import sandy.primitive.*; import flash.utils.*; import flash.net.*; import flash.ui.*; public class ThrowWall extends MovieClip { private var _lives:Number; private var txtScore:TextField; public var games3000_btn:SimpleButton; private var isGenerateLevel:Boolean;// = true private var btnRestart:SimpleButton; public var tutorial_mc:MovieClip; private var btnSound:SimpleButton; private var figureGroup:TransformGroup; private var levelTimer:Timer; private var txtTarget:TextField; private var cont_level:Number; private var rotateX:Number; private var rotateY:Number; private var txtLives:TextField; private var mcTopControl:MovieClip; private var txtSound:TextField; private var _level:Number;// = 10 private var request:URLRequest; private var scene:Scene3D; private var lCamera:Camera3D; private var mainMenu:MovieClip; private var mcTarget:MovieClip; private var btnQuit:SimpleButton; private var currentWall:Number; private var mcControl:MovieClip; public var topControl_mc:MovieClip; private var speedZ:Number;// = 0 private var speedY:Number;// = 0 private var btnPause:SimpleButton; public var txtLevel:TextField; private var mcCurrent:MovieClip; private var wallsGroups:TransformGroup; public var level_txt:TextField; private var sky:StarField; private var sounds:SoundController; private var lG:Group; private var levels:Levels; private var _score:Number; public var game_over_mc:MovieClip; private var mcGameOver:MovieClip; private var decorationGroup:TransformGroup; private var boxes:Array; private var cont_lives:Number; public var control_mc:MovieClip; private var isRotateX:Boolean; private var isRotateY:Boolean; private var walls:Array; private var gameSo:SharedObject; public var main_menu_mc:MovieClip; private var mcGrid:MovieClip; private static var PAUSE:Boolean = false; public function ThrowWall():void{ speedZ = 0; speedY = 0; _level = 10; isGenerateLevel = true; super(); MochiServices.connect("1692a2b151871b72", this.parent); initGame(); } private function showMenu(_arg1=null):void{ this["games3000_btn"].visible = false; mainMenu.x = 320; mainMenu.filters = [new BlurFilter(100, 0, 3)]; TweenFilterLite.to(mainMenu, 1, {type:"Blur", blurX:0, alpha:1}); } private function addWall(_arg1:Number, _arg2:Number, _arg3:Number):Wall{ var _local4:Wall; var _local5:MaterialAttributes; var _local6:Appearance; var _local7:BitmapData; var _local8:BitmapMaterial; _local4 = new Wall(("wall" + _arg3.toString()), 450, 500); _local4.x = _arg1; _local4.y = _arg2; _local4.z = _arg3; _local4.useSingleContainer = false; _local4.enableBackFaceCulling = true; _local4.enableNearClipping = true; _local5 = new MaterialAttributes(new LineAttributes(1, 0xFFFFFF, 0), new LightAttributes(false, 0.5)); _local7 = new BitmapData(200, 200, false, 0); _local8 = new BitmapMaterial(_local7, _local5); _local8.lightingEnable = true; _local6 = new Appearance(_local8); _local4.appearance = _local6; return (_local4); } public function set lives(_arg1:Number):void{ _lives = _arg1; txtLives.text = lives.toString(); trace(lives); if (lives == 0){ levelTimer.stop(); walls = []; wallsGroups.destroy(); figureGroup.destroy(); gameOver(); }; } private function winGame():void{ TweenLite.to(mcTopControl, 0.3, {y:-100, overwrite:false, ease:Back.easeIn}); TweenLite.to(mcControl, 0.5, {x:700, ease:Back.easeIn}); stage.removeEventListener(KeyboardEvent.KEY_DOWN, keyPressedHandler); removeEventListener(Event.ENTER_FRAME, enterFrameHandler); decorationGroup = createDecorationGroup(); lG.addChild(decorationGroup); addEventListener(Event.ENTER_FRAME, winMovie); mcGameOver.visible = true; mcGameOver.alpha = 0; mcGameOver.gotoAndStop(2); mcGameOver.filters = [new BlurFilter(100, 0, 3)]; TweenFilterLite.to(mcGameOver, 1, {type:"Blur", blurX:0, alpha:10, delay:3}); } private function enterFrameHandler(_arg1:Event):void{ var _local2:Number; var _local3:Wall; if (PAUSE){ return; }; if (wallsGroups){ _local2 = (wallsGroups.children.length - 1); while (_local2 >= 0) { _local3 = Wall(wallsGroups.children[_local2]); if (_local3.visible){ _local3.z = (_local3.z + speedZ); if (_local3.z < 3000){ _local3.y = (_local3.y + speedY); }; }; if (_local3.y <= -70){ _local3.y = -70; }; if ((((_local3.z <= 0)) && ((speedZ < 0)))){ if (_local3.visible){ if (_local3.bitmapData.compare(createSnapshot()) == 0){ score = (score + 10); sounds.playSound("hit"); speedZ = 0; speedY = 0; _local3.visible = false; _local3.z = -1000; _local3.target_mc.visible = false; if (lives > 0){ nextFigure(_local3.num); }; mcGrid.filters = [new GlowFilter(0xFF00)]; TweenFilterLite.to(mcGrid, 0.3, {type:"Glow", strength:4}); TweenFilterLite.to(mcGrid, 0.3, {delay:0.4, type:"Glow", strength:0, overwrite:false}); } else { sounds.playSound("lose"); lives--; mcGrid.filters = [new GlowFilter(0xFF0000)]; TweenFilterLite.to(mcGrid, 0.3, {type:"Glow", strength:4}); TweenFilterLite.to(mcGrid, 0.3, {delay:0.4, type:"Glow", strength:0, overwrite:false}); speedZ = 0; speedY = 0; if ((((_local3.num == walls.length)) && ((lives > 0)))){ _local3.z = 3000; _local3.y = 500; levels.timer = (levels.timer + 10000); } else { if (lives > 0){ _local3.visible = false; _local3.z = -1000; _local3.target_mc.visible = false; nextFigure(_local3.num); }; }; txtLives.filters = [new GlowFilter(0xFF0000)]; TweenFilterLite.to(txtLives, 0.3, {type:"Glow", strength:4}); TweenFilterLite.to(txtLives, 0.3, {delay:0.4, type:"Glow", strength:0, overwrite:false}); }; if (wallsGroups.children.length == 0){ break; }; }; }; _local2--; }; if (isRotateX){ figureGroup.rotateX = (figureGroup.rotateX - rotateX); if ((Math.abs(figureGroup.rotateX) % 90) == 0){ isRotateX = false; if (Math.abs(figureGroup.rotateX) >= 360){ figureGroup.rotateX = 0; }; rotateX = 0; scene.render(); createOutline(mcCurrent); }; }; if (isRotateY){ figureGroup.rotateY = (figureGroup.rotateY - rotateY); if ((Math.abs(figureGroup.rotateY) % 90) == 0){ if (Math.abs(figureGroup.rotateY) >= 360){ figureGroup.rotateY = 0; }; isRotateY = false; rotateY = 0; scene.render(); createOutline(mcCurrent); }; }; }; scene.render(); } private function applyBitmap(_arg1:Wall):void{ var _local2:BitmapMaterial; var _local3:BitmapData; _local2 = (_arg1.appearance.frontMaterial as BitmapMaterial); _local3 = _local2.texture; _local3.draw(_arg1.bitmapData); } public function onCLick3(_arg1:Event):void{ if (language.language_nr == 2){ request = new URLRequest(language.url1); } else { request = new URLRequest((language.url1 + "&utm_content=button_gameover_moregames")); }; navigateToURL(request, "_blank"); } public function onCLick2(_arg1:Event):void{ if (language.language_nr == 2){ request = new URLRequest(language.url1); } else { request = new URLRequest((language.url1 + "&utm_content=button_mainscreen_moregames")); }; navigateToURL(request, "_blank"); } private function initLevel():void{ var _local1:NumberFormat; var _local2:SimpleButton; btnPause.enabled = true; btnPause.alpha = 1; mcControl.filters = [new BlurFilter(100, 0, 3)]; TweenFilterLite.to(mcControl, 0.3, {type:"Blur", blurX:0, alpha:1}); TweenLite.to(mcControl, 0.3, {x:496, overwrite:false, ease:Back.easeOut}); wallsGroups.visible = true; wallsGroups.z = (wallsGroups.z + 1); figureGroup.visible = true; figureGroup.x = (figureGroup.x + 1); levelTimer.start(); _local1 = new NumberFormat("###.00"); txtTarget.text = _local1.format((levels.timer / 1000), {group:"", decimal:"."}); isGenerateLevel = false; if ((((level == 1)) && (!(gameSo.data.tutorial)))){ this["tutorial_mc"].gotoAndPlay(2); _local2 = this["tutorial_mc"]["hidetutorial_btn"]; _local2.addEventListener(MouseEvent.CLICK, hideTutorial); }; } public function onCLick4(_arg1:Event):void{ if (language.language_nr == 2){ request = new URLRequest(language.url1); } else { request = new URLRequest((language.url1 + "&utm_content=button_highscore_3000games")); }; navigateToURL(request, "_blank"); } private function levelTime(_arg1:TimerEvent):void{ var _local2:NumberFormat; levels.timer = (levels.timer - 100); _local2 = new NumberFormat("###.00"); txtTarget.text = _local2.format((levels.timer / 1000), {group:"", decimal:"."}); if (levels.timer <= 0){ levels.timer = 0; moveWall(); }; } private function createSky():void{ var _local1:int; var _local2:Number; var _local3:int; var _local4:Number; var _local5:Number; sky = new StarField(); _local1 = 10000; _local2 = 500; _local3 = 0; while (_local3 < _local1) { _local4 = Math.acos((-1 + (((2 * _local3) - 1) / _local1))); _local5 = (Math.sqrt((_local1 * Math.PI)) * _local4); _local4 = (_local4 + (0.1 * (Math.random() - 0.5))); _local5 = (_local5 + (0.1 * (Math.random() - 0.5))); sky.stars[_local3] = new Vertex(((_local2 * Math.cos(_local5)) * Math.sin(_local4)), ((_local2 * Math.sin(_local5)) * Math.sin(_local4)), (_local2 * Math.cos(_local4))); _local3++; }; sky.container.filters = [new GlowFilter(10092543, 1, 4, 4, 15)]; sky.container.alpha = 0; scene.root.addChild(sky); } public function get score():Number{ return (_score); } private function startLevel():void{ btnPause.enabled = false; btnPause.alpha = 0.7; mainMenu.x = -1000; mcCurrent.graphics.clear(); while (mcTarget.numChildren) { mcTarget.removeChildAt(0); }; isGenerateLevel = true; createLevel(); sounds.playSound("startlevel"); introText(("LEVEL " + level.toString()), initLevel); } private function initMenu():void{ var _local1:SimpleButton; var _local2:SimpleButton; var _local3:SimpleButton; var _local4:SimpleButton; var _local5:SimpleButton; var _local6:SimpleButton; _local1 = mainMenu["start_btn"]; _local1.removeEventListener(MouseEvent.CLICK, startGame); _local1.addEventListener(MouseEvent.CLICK, startGame); _local2 = mainMenu["credit_btn"]; _local2.removeEventListener(MouseEvent.CLICK, showCredits); _local2.addEventListener(MouseEvent.CLICK, showCredits); _local3 = mainMenu["continue_btn"]; _local3.removeEventListener(MouseEvent.CLICK, continueGame); _local4 = mainMenu["highscore_btn"]; _local4.removeEventListener(MouseEvent.CLICK, showHighScores); _local4.addEventListener(MouseEvent.CLICK, showHighScores); mainMenu["button_mainscreen_moregames"].addEventListener(MouseEvent.CLICK, onCLick2); this["games3000_btn"].addEventListener(MouseEvent.CLICK, onCLick4); _local5 = mcGameOver["send_score_btn"]; _local5.removeEventListener(MouseEvent.CLICK, sendScore); _local5.addEventListener(MouseEvent.CLICK, sendScore); _local6 = mcGameOver["main_menu_btn"]; _local6.removeEventListener(MouseEvent.CLICK, gotoMainMenu); _local6.addEventListener(MouseEvent.CLICK, gotoMainMenu); mainMenu["button_mainscreen_moregames"].addEventListener(MouseEvent.CLICK, onCLick3); if (cont_level <= 1){ _local3.enabled = false; _local3.alpha = 0.5; } else { _local3.enabled = true; _local3.alpha = 1; _local3.addEventListener(MouseEvent.CLICK, continueGame); }; } private function winMovie(_arg1:Event):void{ if (decorationGroup.z < -1500){ if (!sky){ createSky(); }; } else { Bg.instanse.visible = false; decorationGroup.z = (decorationGroup.z - 50); decorationGroup.y = (decorationGroup.y - 10); }; if (sky){ sky.rotateX = (sky.rotateX + 0.1); if (sky.container.alpha < 1){ sky.container.alpha = (sky.container.alpha + 0.07); }; }; scene.render(); } private function hideTutorial(_arg1:MouseEvent):void{ this["tutorial_mc"].gotoAndStop(1); gameSo.data.tutorial = true; } private function showCredits(_arg1:MouseEvent):void{ mainMenu["credits_mc"].gotoAndPlay(2); } private function createSnapshot():BitmapData{ var _local1:Point3D; var _local2:Number; var _local3:Shape; var _local4:Graphics; var _local5:String; var _local6:Array; var _local7:Array; var _local8:Array; var _local9:Matrix; var _local10:Number; var _local11:BitmapData; var _local12:CollisionBox; var _local13:Rectangle; _local1 = figureGroup.matrix.getEulerAngles(); _local1.x = Math.round(_local1.x); _local1.y = Math.round(_local1.y); _local1.z = Math.round(_local1.z); if (_local1.x >= 360){ _local1.x = (_local1.x - 360); }; if (_local1.y >= 360){ _local1.y = (_local1.y - 360); }; if (_local1.z >= 360){ _local1.z = (_local1.z - 360); }; trace(_local1); _local2 = 2.4; _local3 = new Shape(); _local4 = _local3.graphics; _local4.clear(); _local5 = GradientType.LINEAR; _local6 = [0xFFFFFF, 0]; _local7 = [100, 100]; _local8 = [140, 240]; _local9 = new Matrix(); _local9.rotate(90); _local4.beginGradientFill(_local5, _local6, _local7, _local8, _local9); _local4.drawRect(-10, -10, 500, 500); _local4.endFill(); _local10 = 0; while (_local10 < boxes.length) { _local12 = CollisionBox(boxes[_local10]); _local4.beginFill(0); _local4.lineStyle(0, 0); _local13 = _local12.getProjection(_local1); _local4.drawRect(((_local13.x / _local2) + 94), ((_local13.y / _local2) + 91), (_local13.width / _local2), (_local13.height / _local2)); _local4.endFill(); _local10++; }; _local11 = new BitmapData(500, 500); _local11.draw(_local3); return (_local11); } private function quitGame(_arg1:MouseEvent):void{ sounds.stopBackground(); levelTimer.stop(); walls = []; wallsGroups.destroy(); figureGroup.destroy(); TweenFilterLite.killTweensOf(txtLevel); txtLevel.alpha = 0; TweenLite.to(mcTopControl, 0.3, {y:-100, overwrite:false, ease:Back.easeIn}); TweenLite.to(mcControl, 0.5, {x:700, ease:Back.easeIn}); stage.removeEventListener(KeyboardEvent.KEY_DOWN, keyPressedHandler); removeEventListener(Event.ENTER_FRAME, enterFrameHandler); showMenu(); } private function pauseGame(_arg1:MouseEvent):void{ if (!btnPause.enabled){ return; }; PAUSE = true; levelTimer.stop(); filters = [new BlurFilter(100, 0, 3)]; enabled = false; mouseChildren = false; mouseChildren = false; ContinueGame.instanse.x = 320; ContinueGame.instanse.y = 240; ContinueGame.instanse.addEventListener(MouseEvent.CLICK, resumeGame); } private function keyPressedHandler(_arg1:KeyboardEvent):void{ var _local2:Number; if (((isGenerateLevel) || (PAUSE))){ return; }; _local2 = 5; if (((!(isRotateX)) && (!(isRotateY)))){ switch (_arg1.keyCode){ case Keyboard.UP: case 87: rotateX = -(_local2); isRotateX = true; sounds.playSound("flip"); break; case Keyboard.DOWN: case 83: rotateX = _local2; isRotateX = true; sounds.playSound("flip"); break; case Keyboard.LEFT: case 65: rotateY = _local2; isRotateY = true; sounds.playSound("flip"); break; case Keyboard.RIGHT: case 68: rotateY = -(_local2); isRotateY = true; sounds.playSound("flip"); break; }; }; switch (_arg1.keyCode){ case Keyboard.SPACE: moveWall(); break; }; } public function set level(_arg1:Number):void{ _level = _arg1; cont_level = level; cont_lives = lives; gameSo.data.cont_lives = lives; gameSo.data.cont_level = cont_level; initMenu(); } private function createDecorationGroup():TransformGroup{ var _local1:TransformGroup; var _local2:MaterialAttributes; var _local3:Material; var _local4:Appearance; var _local5:Number; var _local6:Line3D; _local1 = new TransformGroup(); _local2 = new MaterialAttributes(new LineAttributes(1, 0xFFFFFF, 0.2), new LightAttributes(true, 0.1)); _local3 = new ColorMaterial(0xFFFFFF, 1, _local2); _local3.lightingEnable = false; _local4 = new Appearance(_local3); _local5 = 0; while (_local5 < 20) { _local6 = new Line3D(("aLine" + _local5), new Point3D((-500 + (_local5 * 50)), -100, -300), new Point3D((-500 + (_local5 * 50)), -100, 1900)); _local6.appearance = _local4; _local1.addChild(_local6); _local5++; }; _local5 = 0; while (_local5 < 40) { _local6 = new Line3D(("aLine" + _local5), new Point3D(-800, 500, (-500 + (_local5 * 60))), new Point3D(-500, -100, (-500 + (_local5 * 60))), new Point3D(450, -100, (-500 + (_local5 * 60))), new Point3D(750, 500, (-500 + (_local5 * 60)))); _local6.appearance = _local4; _local1.addChild(_local6); _local5++; }; return (_local1); } private function initGame():void{ var _local1:Number; var _local2:Group; gameSo = SharedObject.getLocal("throughtwall"); if (((gameSo.data.cont_lives) && (!(isNaN(gameSo.data.cont_lives))))){ cont_lives = gameSo.data.cont_lives; cont_level = gameSo.data.cont_level; } else { cont_lives = 0; cont_level = 0; }; sounds = SoundController.getInstance(); this["games3000_btn"].visible = false; mcGameOver = this["game_over_mc"]; mcGameOver.visible = false; mainMenu = this["main_menu_mc"]; mcTopControl = this["topControl_mc"]; mcTopControl.y = -100; btnPause = mcTopControl["pause_btn"]; btnPause.addEventListener(MouseEvent.CLICK, pauseGame); btnPause.enabled = false; btnPause.alpha = 0.7; btnQuit = mcTopControl["quit_btn"]; btnQuit.addEventListener(MouseEvent.CLICK, quitGame); btnSound = mcTopControl["sound_btn"]; btnSound.addEventListener(MouseEvent.CLICK, soundMute); txtScore = mcTopControl["scores_txt"]; txtLives = mcTopControl["lives_txt"]; txtSound = mcTopControl["sound_txt"]; levels = new Levels(); txtLevel = this["level_txt"]; mcControl = this["control_mc"]; mcControl.x = 700; btnRestart = mcControl["restart_btn"]; btnRestart.addEventListener(MouseEvent.CLICK, moveWall); mcTarget = mcControl["target_mc"]; mcCurrent = mcControl["current_mc"]; txtTarget = mcControl["target_txt"]; mcGrid = this["control_mc"]["grid_mc"]; mcGrid.graphics.lineStyle(1, 0xCCCCCC, 0.5); _local1 = 0; while (_local1 < 9) { mcGrid.graphics.moveTo(0, ((_local1 + 1) * 16.66)); mcGrid.graphics.lineTo(150, ((_local1 + 1) * 16.66)); mcGrid.graphics.moveTo(((_local1 + 1) * 16.66), 0); mcGrid.graphics.lineTo(((_local1 + 1) * 16.66), 150); _local1++; }; lCamera = new Camera3D(650, 500); lCamera.z = -450; lCamera.y = 90; lCamera.lookAt(0, 50, 0); _local2 = createScene3D(); scene = new Scene3D("scene", this, lCamera, _local2); levelTimer = new Timer(100, 0); levelTimer.addEventListener(TimerEvent.TIMER, levelTime); initMenu(); } private function prepareWalls(_arg1:TimerEvent):void{ var _local2:Wall; var _local3:Timer; _local2 = Wall(walls[currentWall]); _local2.bitmapData = createSnapshot(); applyBitmap(_local2); _local2.target_mc = new MovieClip(); mcTarget.addChild(_local2.target_mc); createOutline(_local2.target_mc); _local2.target_mc.visible = false; if (currentWall == (walls.length - 1)){ figureGroup.rotateX = 0; figureGroup.rotateY = 0; figureGroup.resetCoords(); nextPosition(0); } else { randomRotate(); _local3 = new Timer(100, 1); _local3.addEventListener(TimerEvent.TIMER, prepareWalls); _local3.start(); currentWall++; }; } public function set score(_arg1:Number):void{ _score = _arg1; txtScore.text = score.toString(); } private function gotoMainMenu(_arg1:MouseEvent):void{ removeWinItems(); mcGameOver.visible = false; showMenu(); } private function nextPosition(_arg1:Number):void{ mcCurrent.graphics.clear(); if (_arg1 < walls.length){ Wall(walls[_arg1]).target_mc.visible = true; levels.timer = (levels.timer + 10000); if (((levelTimer) && (!(isGenerateLevel)))){ levelTimer.start(); }; } else { endLevel(); }; } private function moveWall(_arg1:MouseEvent=null):void{ speedZ = -30; speedY = -15; levelTimer.stop(); sounds.playSound("move"); } private function showHighScores(_arg1:MouseEvent):void{ removeEventListener(Event.ENTER_FRAME, winMovie); hideMenu(null); MochiScores.showLeaderboard({boardID:"3bc0c4390fbb0880", onClose:showMenu, onDisplay:show3000games}); } private function continueGame(_arg1:MouseEvent):void{ score = 0; lives = cont_lives; level = cont_level; sounds.playBackground("bgmusic"); isGenerateLevel = true; Bg.instanse.visible = true; TweenLite.to(mcTopControl, 0.3, {y:3, overwrite:false, ease:Back.easeOut}); stage.addEventListener(KeyboardEvent.KEY_DOWN, keyPressedHandler); addEventListener(Event.ENTER_FRAME, enterFrameHandler); hideMenu(startLevel); } public function get lives():Number{ return (_lives); } private function endLevel():void{ isGenerateLevel = true; levelTimer.stop(); walls = []; wallsGroups.destroy(); figureGroup.destroy(); level++; if (level == 41){ winGame(); } else { this["tutorial_mc"].gotoAndStop(1); if (!gameSo.data.tutorial){ gameSo.data.tutorial = true; }; introText("LEVEL COMPLETE", startLevel); }; TweenLite.to(mcControl, 0.5, {x:700, ease:Back.easeIn}); score = (score + Math.floor((levels.timer / 1000))); } private function addBox(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number=50):CollisionBox{ var _local5:CollisionBox; var _local6:MaterialAttributes; var _local7:Material; var _local8:Appearance; _local5 = new CollisionBox("theBox", _arg4, _arg4, _arg4); _local5.x = (_arg1 + 0); _local5.y = (_arg2 + 0); _local5.z = _arg3; _local5.useSingleContainer = false; _local5.enableBackFaceCulling = true; _local5.enableNearClipping = true; _local6 = new MaterialAttributes(new LineAttributes(2, 0xFFFFFF, 1), new LightAttributes(false, 0)); _local7 = new ColorMaterial(0, 1, _local6); _local7.lightingEnable = true; _local8 = new Appearance(_local7); _local5.appearance = _local8; _local5.enableEvents = true; return (_local5); } private function show3000games():void{ this["games3000_btn"].visible = true; } private function createScene3D():Group{ lG = new Group(); return (lG); } private function startGame(_arg1:MouseEvent):void{ sounds.playBackground("bgmusic"); score = 0; lives = 3; level = 1; speedZ = 0; speedY = 0; isGenerateLevel = true; Bg.instanse.visible = true; TweenLite.to(mcTopControl, 0.3, {y:3, overwrite:false, ease:Back.easeOut}); stage.addEventListener(KeyboardEvent.KEY_DOWN, keyPressedHandler); addEventListener(Event.ENTER_FRAME, enterFrameHandler); hideMenu(startLevel); } public function get level():Number{ return (_level); } private function createOutline(_arg1:MovieClip):void{ var _local2:Point3D; var _local3:Number; var _local4:Graphics; var _local5:Number; var _local6:CollisionBox; var _local7:Rectangle; _local2 = figureGroup.matrix.getEulerAngles(); _local2.x = Math.round(_local2.x); _local2.y = Math.round(_local2.y); _local2.z = Math.round(_local2.z); if (isNaN(_local2.y)){ _local2.y = 270; }; if (_local2.x >= 360){ _local2.x = (_local2.x - 360); }; if (_local2.y >= 360){ _local2.y = (_local2.y - 360); }; if (_local2.z >= 360){ _local2.z = (_local2.z - 360); }; _local3 = 2.4; trace(_local2); _local4 = _arg1.graphics; _local4.clear(); _local5 = 0; while (_local5 < boxes.length) { _local6 = CollisionBox(boxes[_local5]); if (_arg1 != mcCurrent){ _local4.beginFill(0, 0); _local4.lineStyle(2, 0xFF0000); } else { _local4.beginFill(820515, 1); _local4.lineStyle(0, 52445, 0); }; _local7 = _local6.getProjection(_local2); _local4.drawRect(((_local7.x / _local3) + 67), ((_local7.y / _local3) + 67), (_local7.width / _local3), (_local7.height / _local3)); _local4.endFill(); _local5++; }; } private function nextFigure(_arg1:Number):void{ if ((_arg1 + 2) < walls.length){ Wall(walls[(_arg1 + 2)]).y = 500; Wall(walls[(_arg1 + 2)]).z = 9000; Wall(walls[(_arg1 + 2)]).visible = true; }; nextPosition(_arg1); } private function introText(_arg1:String, _arg2:Function):void{ var _local3:Number; btnPause.enabled = false; btnPause.alpha = 0.7; _local3 = 1; wallsGroups.visible = false; txtLevel.text = _arg1; txtLevel.y = 170; txtLevel.x = 73; txtLevel.alpha = 0; txtLevel.filters = [new BlurFilter(100, 0, 3)]; TweenFilterLite.to(txtLevel, _local3, {type:"Blur", blurX:0, alpha:1}); TweenFilterLite.to(txtLevel, _local3, {type:"Blur", blurX:100, alpha:0, delay:(_local3 * 2), overwrite:false, onComplete:_arg2}); } private function hideMenu(_arg1:Function):void{ mainMenu.filters = [new BlurFilter(0, 0, 3)]; TweenFilterLite.to(mainMenu, 1, {type:"Blur", blurX:100, alpha:0, onComplete:_arg1}); } private function soundMute(_arg1:MouseEvent):void{ if (sounds.volume == 0){ sounds.volume = 100; sounds.musicVolume = 50; txtSound.text = "ON"; } else { sounds.volume = 0; sounds.musicVolume = 0; txtSound.text = "OFF"; }; } private function resumeGame(_arg1:MouseEvent):void{ PAUSE = false; levelTimer.start(); filters = []; enabled = true; mouseChildren = true; mouseChildren = true; ContinueGame.instanse.x = -1000; ContinueGame.instanse.removeEventListener(MouseEvent.CLICK, resumeGame); } private function gameOver():void{ sounds.stopBackground(); sounds.playSound("gameover"); TweenLite.to(mcTopControl, 0.3, {y:-100, overwrite:false, ease:Back.easeIn}); TweenLite.to(mcControl, 0.5, {x:700, ease:Back.easeIn}); stage.removeEventListener(KeyboardEvent.KEY_DOWN, keyPressedHandler); removeEventListener(Event.ENTER_FRAME, enterFrameHandler); mcGameOver.visible = true; mcGameOver.gotoAndStop(1); mcGameOver.filters = [new BlurFilter(100, 0, 3)]; TweenFilterLite.to(mcGameOver, 1, {type:"Blur", blurX:0, alpha:1}); } private function removeWinItems():void{ levelTimer.stop(); walls = []; wallsGroups.destroy(); figureGroup.destroy(); Bg.instanse.visible = true; removeEventListener(Event.ENTER_FRAME, winMovie); sounds.stopBackground(); if (sky){ sky.destroy(); }; sky = null; if (decorationGroup){ decorationGroup.destroy(); }; } private function sendScore(_arg1:MouseEvent):void{ removeWinItems(); mcGameOver.visible = false; MochiScores.showLeaderboard({boardID:"3bc0c4390fbb0880", score:score, onClose:showMenu, onDisplay:show3000games}); } private function createLevel():void{ var _local1:Number; var _local2:Array; var _local3:Number; var _local4:Wall; var _local5:Timer; var _local6:Box; if (wallsGroups){ wallsGroups.destroy(); }; if (figureGroup){ figureGroup.destroy(); }; figureGroup = new TransformGroup("rotation"); wallsGroups = new TransformGroup("walls"); lG.addChild(figureGroup); lG.addChild(wallsGroups); _local2 = levels.getLevel(level); boxes = []; _local3 = 40; _local1 = 0; while (_local1 < _local2.length) { _local6 = addBox((_local2[_local1][0] * _local3), (_local2[_local1][1] * _local3), (_local2[_local1][2] * _local3), _local3); boxes.push(_local6); figureGroup.addChild(_local6); _local1++; }; walls = []; _local1 = 1; while (_local1 <= levels.wallsCount) { _local4 = addWall(0, 500, (3000 * _local1)); _local4.num = _local1; _local4.visible = (_local1 < 4); walls.push(_local4); wallsGroups.addChild(_local4); _local1++; }; randomRotate(); currentWall = 0; _local5 = new Timer(100, 1); _local5.addEventListener(TimerEvent.TIMER, prepareWalls); _local5.start(); wallsGroups.y = 50; figureGroup.x = 1; figureGroup.visible = false; } private function randomRotate():void{ var _local1:Number; _local1 = 0; while (_local1 < 20) { if (NumberUtilities.random(0, 10) > 5){ figureGroup.rotateX = (figureGroup.rotateX + 90); } else { figureGroup.rotateX = (figureGroup.rotateX - 90); }; if (NumberUtilities.random(0, 10) > 5){ figureGroup.rotateY = (figureGroup.rotateY + 90); } else { figureGroup.rotateY = (figureGroup.rotateY - 90); }; if (Math.abs(figureGroup.rotateY) >= 360){ figureGroup.rotateY = 0; }; if (Math.abs(figureGroup.rotateX) >= 360){ figureGroup.rotateX = 0; }; _local1++; }; if ((((figureGroup.rotateY == 0)) && ((figureGroup.rotateX == 0)))){ randomRotate(); }; } } }//package
Section 107
//Wall (Wall) package { import flash.display.*; import sandy.primitive.*; public class Wall extends Plane3D { public var target_mc:MovieClip; public var num:Number; public var bitmapData:BitmapData; public function Wall(_arg1:String=null, _arg2:Number=100, _arg3:Number=100, _arg4:uint=1, _arg5:uint=1, _arg6:String="xy_aligned", _arg7:String=null){ super(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7); } } }//package

Library Items

Symbol 1 FontUsed by:2 8 10 11 12 13 14 15 16 19 20 23 24 27 28 29 32 33 35 37 38 41 42 43 44 45 46 50 51 174 175 177 178 180 183 186 189 191 194 195 196 199 200 203 206 207
Symbol 2 EditableTextUses:1Used by:205
Symbol 3 GraphicUsed by:9  Timeline
Symbol 4 GraphicUsed by:5
Symbol 5 MovieClipUses:4Used by:9
Symbol 6 GraphicUsed by:7
Symbol 7 ButtonUses:6Used by:9
Symbol 8 EditableTextUses:1Used by:9
Symbol 9 MovieClip {throwWalls_fla.control_mc_5}Uses:3 5 7 8Used by:205
Symbol 10 TextUses:1Used by:26
Symbol 11 TextUses:1Used by:26
Symbol 12 EditableTextUses:1Used by:26
Symbol 13 EditableTextUses:1Used by:26
Symbol 14 EditableTextUses:1Used by:26
Symbol 15 TextUses:1Used by:18 25
Symbol 16 TextUses:1Used by:18
Symbol 17 GraphicUsed by:18 25
Symbol 18 ButtonUses:15 16 17Used by:26
Symbol 19 TextUses:1Used by:22
Symbol 20 TextUses:1Used by:22
Symbol 21 GraphicUsed by:22
Symbol 22 ButtonUses:19 20 21Used by:26
Symbol 23 TextUses:1Used by:25
Symbol 24 TextUses:1Used by:25
Symbol 25 ButtonUses:23 24 17 15Used by:26
Symbol 26 MovieClip {throwWalls_fla.topControl_mc_8}Uses:10 11 12 13 14 18 22 25Used by:205
Symbol 27 TextUses:1Used by:173
Symbol 28 TextUses:1Used by:31
Symbol 29 TextUses:1Used by:31
Symbol 30 GraphicUsed by:31
Symbol 31 ButtonUses:28 29 30Used by:173
Symbol 32 TextUses:1Used by:36 223
Symbol 33 TextUses:1Used by:36 223
Symbol 34 GraphicUsed by:36 39
Symbol 35 TextUses:1Used by:36 39
Symbol 36 ButtonUses:32 33 34 35Used by:173
Symbol 37 TextUses:1Used by:39
Symbol 38 TextUses:1Used by:39
Symbol 39 ButtonUses:37 38 34 35Used by:173
Symbol 40 ShapeTweeningUsed by:49
Symbol 41 TextUses:1Used by:49
Symbol 42 TextUses:1Used by:49
Symbol 43 TextUses:1Used by:49
Symbol 44 TextUses:1Used by:49
Symbol 45 TextUses:1Used by:49
Symbol 46 TextUses:1Used by:49
Symbol 47 GraphicUsed by:49 172
Symbol 48 ShapeTweeningUsed by:49
Symbol 49 MovieClip {throwWalls_fla.credits_mc_16}Uses:40 41 42 43 44 45 46 47 48Used by:173
Symbol 50 TextUses:1Used by:53
Symbol 51 TextUses:1Used by:53
Symbol 52 GraphicUsed by:53 176
Symbol 53 ButtonUses:50 51 52Used by:173
Symbol 54 FontUsed by:55 57 58 59 60 61 62 63 64 65 66 67 68
Symbol 55 TextUses:54Used by:70
Symbol 56 GraphicUsed by:70
Symbol 57 TextUses:54Used by:70
Symbol 58 TextUses:54Used by:70
Symbol 59 TextUses:54Used by:70
Symbol 60 TextUses:54Used by:70
Symbol 61 TextUses:54Used by:70
Symbol 62 TextUses:54Used by:70
Symbol 63 TextUses:54Used by:70
Symbol 64 TextUses:54Used by:70
Symbol 65 TextUses:54Used by:70
Symbol 66 TextUses:54Used by:70
Symbol 67 TextUses:54Used by:70
Symbol 68 TextUses:54Used by:70
Symbol 69 GraphicUsed by:70
Symbol 70 MovieClip {throwWalls_fla.text1_18}Uses:55 56 57 58 59 60 61 62 63 64 65 66 67 68 69Used by:173 204
Symbol 71 GraphicUsed by:72
Symbol 72 MovieClipUses:71Used by:171
Symbol 73 GraphicUsed by:84
Symbol 74 GraphicUsed by:84
Symbol 75 GraphicUsed by:84
Symbol 76 GraphicUsed by:84
Symbol 77 GraphicUsed by:84
Symbol 78 GraphicUsed by:84
Symbol 79 GraphicUsed by:84
Symbol 80 GraphicUsed by:84
Symbol 81 GraphicUsed by:84
Symbol 82 GraphicUsed by:83
Symbol 83 MovieClipUses:82Used by:84
Symbol 84 MovieClipUses:73 74 75 76 77 78 79 80 81 83Used by:171
Symbol 85 GraphicUsed by:86
Symbol 86 MovieClipUses:85Used by:171
Symbol 87 GraphicUsed by:88
Symbol 88 MovieClipUses:87Used by:171
Symbol 89 GraphicUsed by:90
Symbol 90 MovieClipUses:89Used by:171
Symbol 91 GraphicUsed by:92
Symbol 92 MovieClipUses:91Used by:171
Symbol 93 GraphicUsed by:94
Symbol 94 MovieClipUses:93Used by:171
Symbol 95 GraphicUsed by:96
Symbol 96 MovieClipUses:95Used by:171
Symbol 97 GraphicUsed by:98
Symbol 98 MovieClipUses:97Used by:171
Symbol 99 GraphicUsed by:100
Symbol 100 MovieClipUses:99Used by:171
Symbol 101 GraphicUsed by:102
Symbol 102 MovieClipUses:101Used by:171
Symbol 103 GraphicUsed by:104
Symbol 104 MovieClipUses:103Used by:171
Symbol 105 GraphicUsed by:106
Symbol 106 MovieClipUses:105Used by:171
Symbol 107 GraphicUsed by:108
Symbol 108 MovieClipUses:107Used by:171
Symbol 109 GraphicUsed by:110
Symbol 110 MovieClipUses:109Used by:171
Symbol 111 GraphicUsed by:112
Symbol 112 MovieClipUses:111Used by:171
Symbol 113 GraphicUsed by:116
Symbol 114 GraphicUsed by:115
Symbol 115 MovieClipUses:114Used by:116 130
Symbol 116 MovieClipUses:113 115Used by:171
Symbol 117 GraphicUsed by:118
Symbol 118 MovieClipUses:117Used by:171
Symbol 119 GraphicUsed by:120
Symbol 120 MovieClipUses:119Used by:171
Symbol 121 GraphicUsed by:122
Symbol 122 MovieClipUses:121Used by:171
Symbol 123 GraphicUsed by:124
Symbol 124 MovieClipUses:123Used by:171
Symbol 125 GraphicUsed by:126
Symbol 126 MovieClipUses:125Used by:171
Symbol 127 GraphicUsed by:128
Symbol 128 MovieClipUses:127Used by:171
Symbol 129 GraphicUsed by:130
Symbol 130 MovieClipUses:129 115Used by:171
Symbol 131 GraphicUsed by:132
Symbol 132 MovieClipUses:131Used by:171
Symbol 133 GraphicUsed by:134
Symbol 134 MovieClipUses:133Used by:171
Symbol 135 GraphicUsed by:136
Symbol 136 MovieClipUses:135Used by:171
Symbol 137 GraphicUsed by:138
Symbol 138 MovieClipUses:137Used by:171
Symbol 139 GraphicUsed by:140
Symbol 140 MovieClipUses:139Used by:171
Symbol 141 GraphicUsed by:142
Symbol 142 MovieClipUses:141Used by:171
Symbol 143 GraphicUsed by:144
Symbol 144 MovieClipUses:143Used by:171
Symbol 145 GraphicUsed by:146
Symbol 146 MovieClipUses:145Used by:171
Symbol 147 GraphicUsed by:148
Symbol 148 MovieClipUses:147Used by:171
Symbol 149 GraphicUsed by:150
Symbol 150 MovieClipUses:149Used by:171
Symbol 151 GraphicUsed by:152
Symbol 152 MovieClipUses:151Used by:171
Symbol 153 GraphicUsed by:154
Symbol 154 MovieClipUses:153Used by:171
Symbol 155 GraphicUsed by:156
Symbol 156 MovieClipUses:155Used by:171
Symbol 157 GraphicUsed by:158
Symbol 158 MovieClipUses:157Used by:171
Symbol 159 GraphicUsed by:160
Symbol 160 MovieClipUses:159Used by:171
Symbol 161 GraphicUsed by:162
Symbol 162 MovieClipUses:161Used by:171
Symbol 163 GraphicUsed by:164
Symbol 164 MovieClipUses:163Used by:171
Symbol 165 GraphicUsed by:166
Symbol 166 MovieClipUses:165Used by:171
Symbol 167 GraphicUsed by:168
Symbol 168 MovieClipUses:167Used by:171
Symbol 169 GraphicUsed by:170
Symbol 170 MovieClipUses:169Used by:171
Symbol 171 MovieClip {throwWalls_fla.branding_aligned_center_19}Uses:72 84 86 88 90 92 94 96 98 100 102 104 106 108 110 112 116 118 120 122 124 126 128 130 132 134 136 138 140 142 144 146 148 150 152 154 156 158 160 162 164 166 168 170Used by:173 204 227 234 242
Symbol 172 ButtonUses:47Used by:173 204 232
Symbol 173 MovieClip {throwWalls_fla.main_menu_mc_12}Uses:27 31 36 39 49 53 70 171 172Used by:205
Symbol 174 TextUses:1Used by:176
Symbol 175 TextUses:1Used by:176
Symbol 176 ButtonUses:174 175 52Used by:205
Symbol 177 TextUses:1Used by:181
Symbol 178 TextUses:1Used by:181
Symbol 179 GraphicUsed by:181
Symbol 180 TextUses:1Used by:181
Symbol 181 ButtonUses:177 178 179 180Used by:193
Symbol 182 GraphicUsed by:193
Symbol 183 TextUses:1Used by:193
Symbol 184 GraphicUsed by:193
Symbol 185 GraphicUsed by:193
Symbol 186 TextUses:1Used by:193
Symbol 187 GraphicUsed by:193
Symbol 188 GraphicUsed by:193
Symbol 189 TextUses:1Used by:193
Symbol 190 GraphicUsed by:193
Symbol 191 TextUses:1Used by:193
Symbol 192 GraphicUsed by:193
Symbol 193 MovieClip {throwWalls_fla.tutorial_mc_68}Uses:181 182 183 184 185 186 187 188 189 190 191 192Used by:205
Symbol 194 TextUses:1Used by:204
Symbol 195 TextUses:1Used by:198
Symbol 196 TextUses:1Used by:198
Symbol 197 GraphicUsed by:198
Symbol 198 ButtonUses:195 196 197Used by:204
Symbol 199 TextUses:1Used by:202
Symbol 200 TextUses:1Used by:202
Symbol 201 GraphicUsed by:202
Symbol 202 ButtonUses:199 200 201Used by:204
Symbol 203 TextUses:1Used by:204
Symbol 204 MovieClip {throwWalls_fla.GAME_OVER_MC_70}Uses:194 171 70 198 202 172 203Used by:205
Symbol 205 MovieClip {ThrowWall}Uses:2 9 26 173 176 193 204Used by:Timeline
Symbol 206 EditableTextUses:1Used by:Timeline
Symbol 207 TextUses:1Used by:Timeline
Symbol 208 GraphicUsed by:209
Symbol 209 MovieClipUses:208Used by:Timeline
Symbol 210 GraphicUsed by:218
Symbol 211 Sound {bgmusic}Used by:218
Symbol 212 Sound {flip}Used by:218
Symbol 213 Sound {move}Used by:218
Symbol 214 Sound {gameover}Used by:218
Symbol 215 Sound {startlevel}Used by:218
Symbol 216 Sound {lose}Used by:218
Symbol 217 Sound {hit}Used by:218
Symbol 218 MovieClip {throwWalls_fla.Timeline_2}Uses:210 211 212 213 214 215 216 217Used by:Timeline
Symbol 219 BitmapUsed by:220
Symbol 220 GraphicUses:219Used by:221
Symbol 221 MovieClip {Bg}Uses:220Used by:Timeline
Symbol 222 GraphicUsed by:223
Symbol 223 Button {ContinueGame}Uses:222 32 33Used by:Timeline
Symbol 224 GraphicUsed by:231
Symbol 225 BitmapUsed by:226
Symbol 226 GraphicUses:225Used by:227
Symbol 227 MovieClipUses:226 171Used by:231
Symbol 228 GraphicUsed by:229
Symbol 229 MovieClipUses:228Used by:231
Symbol 230 GraphicUsed by:231
Symbol 231 MovieClip {throwWalls_fla.gamesgames_intro_animatie_75}Uses:224 227 229 230Used by:250
Symbol 232 MovieClip {throwWalls_fla.intro_hitarea_78}Uses:172Used by:250
Symbol 233 GraphicUsed by:238
Symbol 234 MovieClipUses:171Used by:238 249
Symbol 235 GraphicUsed by:236
Symbol 236 MovieClipUses:235Used by:238 249
Symbol 237 GraphicUsed by:238
Symbol 238 MovieClip {throwWalls_fla.agame_com_intro_animatie_79}Uses:233 234 236 237Used by:250
Symbol 239 GraphicUsed by:246
Symbol 240 BitmapUsed by:241
Symbol 241 GraphicUses:240Used by:242
Symbol 242 MovieClipUses:241 171Used by:246
Symbol 243 GraphicUsed by:244
Symbol 244 MovieClipUses:243Used by:246
Symbol 245 GraphicUsed by:246
Symbol 246 MovieClip {throwWalls_fla.girlsgogames_com_intro_animatie_82}Uses:239 242 244 245Used by:250
Symbol 247 GraphicUsed by:249
Symbol 248 GraphicUsed by:249
Symbol 249 MovieClip {throwWalls_fla.game_com_cn_intro_animatie_85}Uses:247 234 236 248Used by:250
Symbol 250 MovieClip {throwWalls_fla.intro_74}Uses:231 232 238 246 249Used by:Timeline

Instance Names

"preloader_txt"Frame 1Symbol 206 EditableText
"preloader_line_mc"Frame 1Symbol 209 MovieClip
"intro"Frame 3Symbol 250 MovieClip {throwWalls_fla.intro_74}
"current_mc"Symbol 9 MovieClip {throwWalls_fla.control_mc_5} Frame 1Symbol 5 MovieClip
"grid_mc"Symbol 9 MovieClip {throwWalls_fla.control_mc_5} Frame 1Symbol 5 MovieClip
"target_mc"Symbol 9 MovieClip {throwWalls_fla.control_mc_5} Frame 1Symbol 5 MovieClip
"restart_btn"Symbol 9 MovieClip {throwWalls_fla.control_mc_5} Frame 1Symbol 7 Button
"target_txt"Symbol 9 MovieClip {throwWalls_fla.control_mc_5} Frame 1Symbol 8 EditableText
"lives_txt"Symbol 26 MovieClip {throwWalls_fla.topControl_mc_8} Frame 1Symbol 12 EditableText
"scores_txt"Symbol 26 MovieClip {throwWalls_fla.topControl_mc_8} Frame 1Symbol 13 EditableText
"sound_txt"Symbol 26 MovieClip {throwWalls_fla.topControl_mc_8} Frame 1Symbol 14 EditableText
"pause_btn"Symbol 26 MovieClip {throwWalls_fla.topControl_mc_8} Frame 1Symbol 18 Button
"sound_btn"Symbol 26 MovieClip {throwWalls_fla.topControl_mc_8} Frame 1Symbol 22 Button
"quit_btn"Symbol 26 MovieClip {throwWalls_fla.topControl_mc_8} Frame 1Symbol 25 Button
"start_btn"Symbol 173 MovieClip {throwWalls_fla.main_menu_mc_12} Frame 1Symbol 31 Button
"continue_btn"Symbol 173 MovieClip {throwWalls_fla.main_menu_mc_12} Frame 1Symbol 36 Button
"credit_btn"Symbol 173 MovieClip {throwWalls_fla.main_menu_mc_12} Frame 1Symbol 39 Button
"credits_mc"Symbol 173 MovieClip {throwWalls_fla.main_menu_mc_12} Frame 1Symbol 49 MovieClip {throwWalls_fla.credits_mc_16}
"highscore_btn"Symbol 173 MovieClip {throwWalls_fla.main_menu_mc_12} Frame 1Symbol 53 Button
"logo_mainscreen"Symbol 173 MovieClip {throwWalls_fla.main_menu_mc_12} Frame 1Symbol 171 MovieClip {throwWalls_fla.branding_aligned_center_19}
"button_mainscreen_moregames"Symbol 173 MovieClip {throwWalls_fla.main_menu_mc_12} Frame 1Symbol 172 Button
"hidetutorial_btn"Symbol 193 MovieClip {throwWalls_fla.tutorial_mc_68} Frame 1Symbol 181 Button
"logo_mainscreen"Symbol 204 MovieClip {throwWalls_fla.GAME_OVER_MC_70} Frame 1Symbol 171 MovieClip {throwWalls_fla.branding_aligned_center_19}
"main_menu_btn"Symbol 204 MovieClip {throwWalls_fla.GAME_OVER_MC_70} Frame 1Symbol 198 Button
"send_score_btn"Symbol 204 MovieClip {throwWalls_fla.GAME_OVER_MC_70} Frame 1Symbol 202 Button
"button_gameover_moregames"Symbol 204 MovieClip {throwWalls_fla.GAME_OVER_MC_70} Frame 1Symbol 172 Button
"level_txt"Symbol 205 MovieClip {ThrowWall} Frame 1Symbol 2 EditableText
"control_mc"Symbol 205 MovieClip {ThrowWall} Frame 1Symbol 9 MovieClip {throwWalls_fla.control_mc_5}
"topControl_mc"Symbol 205 MovieClip {ThrowWall} Frame 1Symbol 26 MovieClip {throwWalls_fla.topControl_mc_8}
"main_menu_mc"Symbol 205 MovieClip {ThrowWall} Frame 1Symbol 173 MovieClip {throwWalls_fla.main_menu_mc_12}
"games3000_btn"Symbol 205 MovieClip {ThrowWall} Frame 1Symbol 176 Button
"tutorial_mc"Symbol 205 MovieClip {ThrowWall} Frame 1Symbol 193 MovieClip {throwWalls_fla.tutorial_mc_68}
"game_over_mc"Symbol 205 MovieClip {ThrowWall} Frame 1Symbol 204 MovieClip {throwWalls_fla.GAME_OVER_MC_70}
"button_intro"Symbol 232 MovieClip {throwWalls_fla.intro_hitarea_78} Frame 1Symbol 172 Button
"hitarea"Symbol 250 MovieClip {throwWalls_fla.intro_74} Frame 1Symbol 232 MovieClip {throwWalls_fla.intro_hitarea_78}

Special Tags

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




http://swfchan.com/47/232980/info.shtml
Created: 28/2 -2020 20:30:46 Last modified: 28/2 -2020 20:30:46 Server time: 29/04 -2024 08:43:33