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

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

Football & Soccer & Rugby - Q-Ball.swf

This is the info page for
Flash #233142

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


Text
loading

<p align="center"><font face="AG Stencil" size="17" color="#ffffff" letterSpacing="0.000000" kerning="1">loading your avatar...</font></p>

<p align="center"><font face="AG Stencil" size="12" color="#cccccc" letterSpacing="0.000000" kerning="1">copyright 2008<font face="Union Agrochem"> <font size="14">- <a href="http://www.adijans.com/index.html?referrer=meez" target = "_blank">Dan Adijans</a></font> </font>&amp;<font face="Union Agrochem"> <font size="14"><a href="http://bneon.free.fr/" target = "_blank">Brian Neong San </a></font></font></font></p>

SOUNDS:ON

SOUNDS:OFF

PLAY

-ball

Play More Games

HIGH SCORES

INSTRuCtionS

Presented by

TIME

<p align="center"></p>

SCORE

CUPS

PLAY AGAIN

MAIN MENU

game over

final score

Submit Score

instructions

PLAY

BACK

use your mouse to guide the q-ball around...

Nudge the soccer ball to knock the cups,
gain points and extend your time

ActionScript [AS3]

Section 1
//DebugDispatcher (com.blitzagency.xray.logger.events.DebugDispatcher) package com.blitzagency.xray.logger.events { import flash.events.*; public class DebugDispatcher extends EventDispatcher { public static var TRACE:String = "trace"; public function sendEvent(_arg1:String, _arg2:Object):void{ trace(_arg2.message); dispatchEvent(new DebugEvent(DebugDispatcher.TRACE, false, false, _arg2)); } } }//package com.blitzagency.xray.logger.events
Section 2
//DebugEvent (com.blitzagency.xray.logger.events.DebugEvent) package com.blitzagency.xray.logger.events { import flash.events.*; public class DebugEvent extends Event { public var obj:Object; public function DebugEvent(_arg1:String, _arg2:Boolean, _arg3:Boolean, _arg4:Object):void{ obj = new Object(); super(_arg1, _arg2, _arg3); obj = _arg4; } } }//package com.blitzagency.xray.logger.events
Section 3
//ObjectTools (com.blitzagency.xray.logger.util.ObjectTools) package com.blitzagency.xray.logger.util { import com.blitzagency.xray.logger.*; import flash.utils.*; public class ObjectTools { private static var log:XrayLog = new XrayLog(); public function resolveBaseType(_arg1:Object):String{ return (""); } public static function getImmediateClassPath(_arg1:Object):String{ var _local2:String; var _local3:String; _local2 = getQualifiedClassName(_arg1); _local3 = getQualifiedSuperclassName(_arg1); _local2 = ((_local2.indexOf("::") > -1)) ? _local2.split("::").join(".") : _local2; if (_local3 == null){ return (_local2); }; _local3 = ((_local3.indexOf("::") > -1)) ? _local3.split("::").join(".") : _local3; return (((_local3 + ".") + _local2)); } public static function getFullClassPath(_arg1:Object):String{ var _local2:XML; var _local3:Array; var _local4:String; var _local5:XML; var _local6:String; _local2 = describeType(_arg1); _local3 = []; _local4 = getQualifiedClassName(_arg1); _local4 = ((_local4.indexOf("::") > -1)) ? _local4.split("::").join(".") : _local4; _local3.push(_local4); for each (_local5 in _local2.extendsClass) { _local6 = ((_local5.@type.toString().indexOf("::") > -1)) ? _local5.@type.toString().split("::")[1] : _local5.@type.toString(); _local3.push(_local6); }; return (_local3.join(".")); } } }//package com.blitzagency.xray.logger.util
Section 4
//PropertyTools (com.blitzagency.xray.logger.util.PropertyTools) package com.blitzagency.xray.logger.util { import flash.utils.*; public class PropertyTools { private static function getVariables():void{ } public static function getProperties(_arg1:Object):Array{ var ary:Array; var xmlDoc:XML; var item:XML; var name:String; var type:String; var value:Object; var obj = _arg1; ary = []; try { xmlDoc = describeType(obj); for each (item in xmlDoc.variable) { name = item.@name.toString(); type = item.@type.toString(); value = ((obj[name])!=null) ? obj[name] : ""; ary.push({name:name, type:type, value:value}); }; } catch(e:Error) { }; return (ary); } private static function getMethods():void{ } } }//package com.blitzagency.xray.logger.util
Section 5
//Debug (com.blitzagency.xray.logger.Debug) package com.blitzagency.xray.logger { import flash.events.*; import flash.utils.*; import com.blitzagency.xray.logger.events.*; import flash.net.*; public class Debug { private static var connected:Boolean = false; private static var xrayLC:LocalConnection; private static var ed:DebugDispatcher = new DebugDispatcher(); public static function traceObject(_arg1:Object, _arg2:Number=254, _arg3:Number=0, _arg4:String="", _arg5:Number=0):void{ var recurseDepth:Number; var indent:Number; var prop:String; var lead:String; var i:Number; var obj:String; var o = _arg1; var pRecurseDepth = _arg2; var pIndent = _arg3; var pPackage = _arg4; var pLevel = _arg5; try { recurseDepth = pRecurseDepth; indent = pIndent; for (prop in o) { lead = ""; i = 0; while (i < indent) { lead = (lead + " "); i = (i + 1); }; obj = o[prop].toString(); if ((o[prop] is Array)){ obj = "[Array]"; }; if (obj == "[object Object]"){ obj = "[Object]"; }; Debug.trace((((lead + prop) + ": ") + obj), pPackage, pLevel); if (recurseDepth > 0){ Debug.traceObject(o[prop], (recurseDepth - 1), (indent + 1), pPackage, pLevel); }; }; } catch(e:Error) { }; } public static function trace(_arg1:Object, _arg2:String="", _arg3:Number=0):void{ var msg:String; var pMsg = _arg1; var pPackage = _arg2; var pLevel = _arg3; ed.sendEvent(DebugDispatcher.TRACE, {message:pMsg, classPackage:pPackage}); if (!connected){ makeConnection(); }; if (connected){ try { msg = ((String(pMsg).length >= 39995)) ? (String(pMsg).substr(0, 39995) + "...") : String(pMsg); xrayLC.send("_xray_view_conn", "setTrace", msg, pLevel, pPackage); } catch(e:LogError) { LogError("No Xray Interface running"); }; }; } private static function makeConnection():void{ var err:LogError; xrayLC = new LocalConnection(); xrayLC.addEventListener("status", statusHandler); xrayLC.allowDomain("*"); try { xrayLC.connect(("_xray_standAlone_debug" + getTimer())); connected = true; } catch(e:Error) { err = new LogError("log"); setTimeout(makeConnection, 1000); }; } public static function addEventListener(_arg1:String, _arg2:Function):void{ ed.addEventListener(_arg1, _arg2); } private static function initialize():Boolean{ ed = new DebugDispatcher(); return (true); } private static function statusHandler(_arg1:StatusEvent):void{ if ((((((_arg1.code == null)) && ((_arg1.level == "error")))) && (connected))){ connected = false; } else { if ((((_arg1.level == "status")) && ((_arg1.code == null)))){ connected = true; }; }; } } }//package com.blitzagency.xray.logger class LogError extends Error { private function LogError(_arg1:String){ super(_arg1); } }
Section 6
//Log (com.blitzagency.xray.logger.Log) package com.blitzagency.xray.logger { import com.blitzagency.xray.logger.util.*; public class Log { private var level:Number; private var caller:String;// = "" private var classPackage:String; private var dump:Object; private var message:String; public function Log(_arg1:String, _arg2:Object, _arg3:Number, ... _args){ var err:LogError; var nullArray:Array; var str:String; var p_message = _arg1; var p_dump = _arg2; var p_level = _arg3; var rest = _args; caller = ""; super(); try { nullArray.push("bogus"); } catch(e:Error) { err = new LogError("log"); } finally { if (err.hasOwnProperty("getStackTrace")){ str = err.getStackTrace(); setCaller(resolveCaller(str)); } else { setCaller(""); }; setMessage(p_message); setDump(p_dump); setLevel(p_level); setClassPackage(p_dump); }; } public function setLevel(_arg1:Number):void{ level = _arg1; } public function getCaller():String{ return (caller); } public function setMessage(_arg1:String):void{ message = _arg1; } public function getLevel():Number{ return (level); } public function getDump():Object{ return (dump); } public function setCaller(_arg1:String):void{ caller = _arg1; } public function setClassPackage(_arg1:Object):void{ classPackage = ObjectTools.getImmediateClassPath(_arg1); } public function getMessage():String{ return (message); } public function getClassPackage():String{ return (classPackage); } public function setDump(_arg1:Object):void{ dump = _arg1; } private function resolveCaller(_arg1:String):String{ var ary:Array; var str = _arg1; ary = []; try { str = str.split("\n").join(""); ary = str.split("\tat "); str = ary[3]; } catch(e:Error) { } finally { str = ""; }; return (str); } } }//package com.blitzagency.xray.logger class LogError extends Error { private function LogError(_arg1:String){ super(_arg1); } }
Section 7
//Logger (com.blitzagency.xray.logger.Logger) package com.blitzagency.xray.logger { public interface Logger { function setLevel(_arg1:Number=0):void; function debug(_arg1:Log):void; function fatal(_arg1:Log):void; function warn(_arg1:Log):void; function error(_arg1:Log):void; function log(_arg1:String, _arg2:String, _arg3:String, _arg4:Number, _arg5:Object=null):void; function info(_arg1:Log):void; } }//package com.blitzagency.xray.logger
Section 8
//XrayLog (com.blitzagency.xray.logger.XrayLog) package com.blitzagency.xray.logger { public class XrayLog { private var logger:XrayLogger; public function XrayLog(){ logger = XrayLogger.getInstance(); } public function debug(_arg1:String, ... _args):void{ var _local3:Number; if (_args.length == 0){ logger.debug(new Log(_arg1, null, XrayLogger.DEBUG)); }; _local3 = 0; while (_local3 < _args.length) { if (_local3 > 0){ _arg1 = ""; }; logger.debug(new Log(_arg1, _args[_local3], XrayLogger.DEBUG)); _local3++; }; } public function fatal(_arg1:String, ... _args):void{ var _local3:Number; if (_args.length == 0){ logger.fatal(new Log(_arg1, null, XrayLogger.FATAL)); }; _local3 = 0; while (_local3 < _args.length) { if (_local3 > 0){ _arg1 = ""; }; logger.fatal(new Log(_arg1, _args[_local3], XrayLogger.FATAL)); _local3++; }; } public function info(_arg1:String, ... _args):void{ var _local3:Number; if (_args.length == 0){ logger.info(new Log(_arg1, null, XrayLogger.INFO)); }; _local3 = 0; while (_local3 < _args.length) { if (_local3 > 0){ _arg1 = ""; }; logger.info(new Log(_arg1, _args[_local3], XrayLogger.INFO)); _local3++; }; } public function warn(_arg1:String, ... _args):void{ var _local3:Number; if (_args.length == 0){ logger.warn(new Log(_arg1, null, XrayLogger.WARN)); }; _local3 = 0; while (_local3 < _args.length) { if (_local3 > 0){ _arg1 = ""; }; logger.warn(new Log(_arg1, _args[_local3], XrayLogger.WARN)); _local3++; }; } public function error(_arg1:String, ... _args):void{ var _local3:Number; if (_args.length == 0){ logger.error(new Log(_arg1, null, XrayLogger.ERROR)); }; _local3 = 0; while (_local3 < _args.length) { if (_local3 > 0){ _arg1 = ""; }; logger.error(new Log(_arg1, _args[_local3], XrayLogger.ERROR)); _local3++; }; } } }//package com.blitzagency.xray.logger
Section 9
//XrayLogger (com.blitzagency.xray.logger.XrayLogger) package com.blitzagency.xray.logger { import flash.events.*; import flash.utils.*; import com.blitzagency.xray.logger.util.*; public class XrayLogger extends EventDispatcher implements Logger { private var displayObjectRecursionDepth:Number;// = 3 private var level:Number;// = 0 private var indentation:Number;// = 0 private var objectRecursionDepth:Number;// = 254 private var filters:Array; public static var FATAL:Number = 4; public static var WARN:Number = 2; public static var ERROR:Number = 3; public static var INFO:Number = 1; public static var DEBUG:Number = 0; private static var _instance:XrayLogger = null; public static var NONE:Number = 5; public function XrayLogger(){ level = 0; displayObjectRecursionDepth = 3; objectRecursionDepth = 254; indentation = 0; filters = []; super(); } public function checkFilters():Boolean{ var _local1:uint; if (filters.length == 0){ return (true); }; _local1 = 0; while (_local1 < filters.length) { _local1++; }; return (true); } public function debug(_arg1:Log):void{ if (_arg1.getLevel() == level){ log(_arg1.getMessage(), _arg1.getCaller(), _arg1.getClassPackage(), 0, _arg1.getDump()); }; } public function setIndentation(_arg1:Number=0):void{ indentation = _arg1; } public function error(_arg1:Log):void{ if (_arg1.getLevel() >= level){ log(_arg1.getMessage(), _arg1.getCaller(), _arg1.getClassPackage(), 3, _arg1.getDump()); }; } public function setLevel(_arg1:Number=0):void{ level = _arg1; } public function fatal(_arg1:Log):void{ if (_arg1.getLevel() >= level){ log(_arg1.getMessage(), _arg1.getCaller(), _arg1.getClassPackage(), 4, _arg1.getDump()); }; } public function warn(_arg1:Log):void{ if (_arg1.getLevel() >= level){ log(_arg1.getMessage(), _arg1.getCaller(), _arg1.getClassPackage(), 2, _arg1.getDump()); }; } public function setObjectRecursionDepth(_arg1:Number):void{ objectRecursionDepth = _arg1; } public function setDisplayClipRecursionDepth(_arg1:Number):void{ displayObjectRecursionDepth = _arg1; } public function info(_arg1:Log):void{ if (_arg1.getLevel() >= level){ log(_arg1.getMessage(), _arg1.getCaller(), _arg1.getClassPackage(), 1, _arg1.getDump()); }; } public function log(_arg1:String, _arg2:String, _arg3:String, _arg4:Number, _arg5:Object=null):void{ var _local6:String; var _local7:String; var _local8:String; var _local9:Object; _local6 = (("(" + getTimer()) + ") "); if (_arg3.length > 0){ _local6 = (_local6 + (_arg2 + "\n")); }; _local6 = (_local6 + _arg1); if (_arg1.length > 0){ Debug.trace(_local6, _arg3, _arg4); }; if (_arg5 == null){ return; }; _local7 = typeof(_arg5); if ((((((((((_local7 == "string")) || ((_local7 == "number")))) || ((_local7 == "boolean")))) || ((_local7 == "undefined")))) || ((_local7 == "null")))){ Debug.trace(_arg5, _arg3, _arg4); } else { if (_local7 == "xml"){ Debug.trace(_arg5.toString(), _arg3, _arg4); } else { _local8 = ObjectTools.getImmediateClassPath(_arg5); if ((((_local8 == "Object")) || ((_local8 == "Object.Array")))){ Debug.traceObject(_arg5, objectRecursionDepth, indentation, _arg3, _arg4); } else { _local9 = PropertyTools.getProperties(_arg5); Debug.traceObject(_local9, displayObjectRecursionDepth, indentation, _arg3, _arg4); }; }; }; } public function setFilters(_arg1:Array):void{ filters = _arg1; } public static function getInstance():XrayLogger{ if (_instance == null){ _instance = new (XrayLogger); }; return (_instance); } public static function resolveLevelAsName(_arg1:Number):String{ switch (_arg1){ case 0: return ("debug"); case 1: return ("info"); case 2: return ("warn"); case 3: return ("error"); case 4: return ("fatal"); default: return ("debug"); }; } } }//package com.blitzagency.xray.logger
Section 10
//MochiScores (mochi.MochiScores) package 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 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; }; }; }; 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{ 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 mochi
Section 11
//MochiServices (mochi.MochiServices) package mochi { import flash.display.*; import flash.events.*; 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; private static var _sendChannel:LocalConnection; private static var _rcvChannelName:String; private static var _gatewayURL:String = "http://www.mochiads.com/static/lib/services/services.swf"; 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 = "__mochiservices"; private static var _rcvChannel:LocalConnection; 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 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 get id():String{ return (_id); } public static function stayOnTop():void{ _container.addEventListener(Event.ENTER_FRAME, MochiServices.bringToTop, false, 0, true); if (_clip != null){ _clip.visible = true; }; } public static function getVersion():String{ return ("1.34"); } 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(); _rcvChannel.close(); } catch(error:Error) { }; }; if (_timer != null){ try { _timer.stop(); } catch(error:Error) { }; }; } public static function allowDomains(_arg1:String):String{ var _local2:String; Security.allowDomain("*"); Security.allowInsecureDomain("*"); if (_arg1.indexOf("http://") != -1){ _local2 = _arg1.split("/")[2].split(":")[0]; Security.allowDomain(_local2); Security.allowInsecureDomain(_local2); }; return (_local2); } public static function doClose():void{ _container.removeEventListener(Event.ENTER_FRAME, MochiServices.bringToTop); if (_clip.parent != null){ Sprite(_clip.parent).removeChild(_clip); }; } 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 onStatus(_arg1:StatusEvent):void{ switch (_arg1.level){ case "error": _connected = false; _listenChannel.connect(_listenChannelName); break; }; } 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}); _rcvChannel.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"); }; _rcvChannel.connect(_rcvChannelName); trace("connected!"); _connecting = false; _connected = true; _listenChannel.close(); 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..."); } 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) { }; }; }; }; } public static function get clip():Object{ return (_container); } public static function set comChannelName(_arg1:String):void{ if (_arg1 != null){ if (_arg1.length > 3){ _sendChannelName = (_arg1 + "_fromgame"); _rcvChannelName = _arg1; initComChannels(); }; }; } private static function loadCommunicator(_arg1:String, _arg2:Object):MovieClip{ var clipname:String; var f:Function; var req:URLRequest; var id = _arg1; var clip = _arg2; clipname = ("_mochiservices_com_" + id); if (_clip != null){ return (_clip); }; if (!MochiServices.isNetworkAvailable()){ return (null); }; MochiServices.allowDomains(_gatewayURL); _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"); }; _loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, f); req = new URLRequest(_gatewayURL); _loader.load(req); _clip.addChild(_loader); _clip._mochiservices_com = _loader; _sendChannel = new LocalConnection(); _clip._queue = []; _rcvChannel = new LocalConnection(); _rcvChannel.allowDomain("*", "localhost"); _rcvChannel.allowInsecureDomain("*", "localhost"); _rcvChannel.client = _clip; _clip._nextcallbackID = 0; _clip._callbacks = {}; listen(); return (_clip); } 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 mochi
Section 12
//Stats (net.hires.utils.Stats) package net.hires.utils { import flash.display.*; import flash.events.*; import flash.geom.*; import flash.utils.*; import flash.text.*; import flash.system.*; public class Stats extends Sprite { private var timer:int; private var graph:BitmapData; private var ms:int; private var memText:TextField; private var fpsText:TextField; private var mem:Number;// = 0 private var fps:int; private var format:TextFormat; private var msPrev:int;// = 0 private var msText:TextField; public function Stats():void{ var _local1:Bitmap; msPrev = 0; mem = 0; super(); graph = new BitmapData(60, 50, false, 819); _local1 = new Bitmap(graph); _local1.y = 35; addChild(_local1); format = new TextFormat("_sans", 9); graphics.beginFill(819); graphics.drawRect(0, 0, 60, 50); graphics.endFill(); fpsText = new TextField(); msText = new TextField(); memText = new TextField(); fpsText.defaultTextFormat = (msText.defaultTextFormat = (memText.defaultTextFormat = format)); fpsText.width = (msText.width = (memText.width = 60)); fpsText.selectable = (msText.selectable = (memText.selectable = false)); fpsText.textColor = 0xFFFF00; fpsText.text = "FPS: "; addChild(fpsText); msText.y = 10; msText.textColor = 0xFF00; msText.text = "MS: "; addChild(msText); memText.y = 20; memText.textColor = 0xFFFF; memText.text = "MEM: "; addChild(memText); addEventListener(MouseEvent.CLICK, mouseHandler); addEventListener(Event.ENTER_FRAME, update); } private function update(_arg1:Event):void{ var _local2:int; var _local3:Number; timer = getTimer(); fps++; if ((timer - 1000) > msPrev){ msPrev = timer; mem = Number((System.totalMemory / 0x100000).toFixed(3)); _local2 = Math.min(50, ((50 / stage.frameRate) * fps)); _local3 = (Math.min(50, Math.sqrt(Math.sqrt((mem * 5000)))) - 2); graph.scroll(1, 0); graph.fillRect(new Rectangle(0, 0, 1, graph.height), 819); graph.setPixel(0, (graph.height - _local2), 0xFFFF00); graph.setPixel(0, (graph.height - ((timer - ms) >> 1)), 0xFF00); graph.setPixel(0, (graph.height - _local3), 0xFFFF); fpsText.text = ((("FPS: " + fps) + " / ") + stage.frameRate); memText.text = ("MEM: " + mem); fps = 0; }; msText.text = ("MS: " + (timer - ms)); ms = timer; } private function mouseHandler(_arg1:MouseEvent):void{ if (this.mouseY > (this.height * 0.35)){ stage.frameRate--; } else { stage.frameRate++; }; fpsText.text = ((("FPS: " + fps) + " / ") + stage.frameRate); } } }//package net.hires.utils
Section 13
//FreeCamera3D (org.papervision3d.cameras.FreeCamera3D) package org.papervision3d.cameras { import org.papervision3d.core.math.*; import org.papervision3d.core.proto.*; public class FreeCamera3D extends CameraObject3D { public static const TYPE:String = "FREECAMERA3D"; public function FreeCamera3D(_arg1:Number=2, _arg2:Number=100){ super(_arg1, _arg2); } override public function transformView(_arg1:Matrix3D=null):void{ if (this._transformDirty){ updateTransform(); }; super.transformView(); } } }//package org.papervision3d.cameras
Section 14
//CoordinateTools (org.papervision3d.core.components.as3.utils.CoordinateTools) package org.papervision3d.core.components.as3.utils { import flash.display.*; import flash.geom.*; public class CoordinateTools { public static function random(_arg1:Number):Number{ return (Math.floor((Math.random() * _arg1))); } public static function localToLocal(_arg1:DisplayObject, _arg2:DisplayObject, _arg3:Point=null):Point{ var _local4:Point; _local4 = (_arg3) ? _arg3 : new Point(); _local4 = _arg1.localToGlobal(_local4); _local4 = _arg2.globalToLocal(_local4); return (_local4); } } }//package org.papervision3d.core.components.as3.utils
Section 15
//DefaultLineCuller (org.papervision3d.core.culling.DefaultLineCuller) package org.papervision3d.core.culling { import org.papervision3d.core.geom.renderables.*; public class DefaultLineCuller implements ILineCuller { public function testLine(_arg1:Line3D):Boolean{ return (((_arg1.v0.vertex3DInstance.visible) && (_arg1.v1.vertex3DInstance.visible))); } } }//package org.papervision3d.core.culling
Section 16
//DefaultParticleCuller (org.papervision3d.core.culling.DefaultParticleCuller) package org.papervision3d.core.culling { import org.papervision3d.core.geom.renderables.*; public class DefaultParticleCuller implements IParticleCuller { public function testParticle(_arg1:Particle):Boolean{ if (_arg1.material.invisible == false){ if (_arg1.vertex3D.vertex3DInstance.visible == true){ return (true); }; }; return (false); } } }//package org.papervision3d.core.culling
Section 17
//DefaultTriangleCuller (org.papervision3d.core.culling.DefaultTriangleCuller) package org.papervision3d.core.culling { import org.papervision3d.core.proto.*; import org.papervision3d.core.geom.renderables.*; public class DefaultTriangleCuller implements ITriangleCuller { protected static var y2:Number; protected static var y1:Number; protected static var y0:Number; protected static var x0:Number; protected static var x1:Number; protected static var x2:Number; public function testFace(_arg1:Triangle3D, _arg2:Vertex3DInstance, _arg3:Vertex3DInstance, _arg4:Vertex3DInstance):Boolean{ var _local5:MaterialObject3D; if (((((_arg2.visible) && (_arg3.visible))) && (_arg4.visible))){ _local5 = (_arg1.material) ? _arg1.material : _arg1.instance.material; if (_local5.invisible){ return (false); }; x0 = _arg2.x; y0 = _arg2.y; x1 = _arg3.x; y1 = _arg3.y; x2 = _arg4.x; y2 = _arg4.y; if (_local5.oneSide){ if (_local5.opposite){ if ((((x2 - x0) * (y1 - y0)) - ((y2 - y0) * (x1 - x0))) > 0){ return (false); }; } else { if ((((x2 - x0) * (y1 - y0)) - ((y2 - y0) * (x1 - x0))) < 0){ return (false); }; }; }; return (true); }; return (false); } } }//package org.papervision3d.core.culling
Section 18
//FrustumTestMethod (org.papervision3d.core.culling.FrustumTestMethod) package org.papervision3d.core.culling { public class FrustumTestMethod { public static const BOUNDING_SPHERE:int = 0; public static const BOUNDING_BOX:int = 1; } }//package org.papervision3d.core.culling
Section 19
//ILineCuller (org.papervision3d.core.culling.ILineCuller) package org.papervision3d.core.culling { import org.papervision3d.core.geom.renderables.*; public interface ILineCuller { function testLine(_arg1:Line3D):Boolean; } }//package org.papervision3d.core.culling
Section 20
//IObjectCuller (org.papervision3d.core.culling.IObjectCuller) package org.papervision3d.core.culling { import org.papervision3d.objects.*; public interface IObjectCuller { function testObject(_arg1:DisplayObject3D):int; } }//package org.papervision3d.core.culling
Section 21
//IParticleCuller (org.papervision3d.core.culling.IParticleCuller) package org.papervision3d.core.culling { import org.papervision3d.core.geom.renderables.*; public interface IParticleCuller { function testParticle(_arg1:Particle):Boolean; } }//package org.papervision3d.core.culling
Section 22
//ITriangleCuller (org.papervision3d.core.culling.ITriangleCuller) package org.papervision3d.core.culling { import org.papervision3d.core.geom.renderables.*; public interface ITriangleCuller { function testFace(_arg1:Triangle3D, _arg2:Vertex3DInstance, _arg3:Vertex3DInstance, _arg4:Vertex3DInstance):Boolean; } }//package org.papervision3d.core.culling
Section 23
//RectangleLineCuller (org.papervision3d.core.culling.RectangleLineCuller) package org.papervision3d.core.culling { import org.papervision3d.core.geom.renderables.*; import flash.geom.*; import org.papervision3d.core.math.util.*; public class RectangleLineCuller implements ILineCuller { private var rectIntersection:Rectangle; private var lineBoundsRect:Rectangle; private var cullingRectangle:Rectangle; public function RectangleLineCuller(_arg1:Rectangle=null):void{ if (_arg1){ this.cullingRectangle = _arg1; }; lineBoundsRect = new Rectangle(); rectIntersection = new Rectangle(); } public function testLine(_arg1:Line3D):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; if (((!(_arg1.v0.vertex3DInstance.visible)) || (!(_arg1.v1.vertex3DInstance.visible)))){ return (false); }; _local2 = _arg1.v0.vertex3DInstance.x; _local3 = _arg1.v0.vertex3DInstance.y; _local4 = _arg1.v1.vertex3DInstance.x; _local5 = _arg1.v1.vertex3DInstance.y; lineBoundsRect.width = Math.abs((_local4 - _local2)); lineBoundsRect.height = Math.abs((_local5 - _local3)); if (_local2 < _local4){ lineBoundsRect.x = _local2; } else { lineBoundsRect.x = _local4; }; if (_local3 < _local5){ lineBoundsRect.y = _local3; } else { lineBoundsRect.y = _local5; }; if (cullingRectangle.containsRect(lineBoundsRect)){ return (true); }; if (!FastRectangleTools.intersects(lineBoundsRect, cullingRectangle)){ return (false); }; rectIntersection = FastRectangleTools.intersection(lineBoundsRect, cullingRectangle); _local6 = ((_local5 - _local3) / (_local4 - _local2)); _local7 = (_local3 - (_local6 * _local2)); _local8 = ((cullingRectangle.top - _local7) / _local6); if ((((_local8 > rectIntersection.left)) && ((_local8 < rectIntersection.right)))){ return (true); }; _local8 = ((cullingRectangle.bottom - _local7) / _local6); if ((((_local8 > rectIntersection.left)) && ((_local8 < rectIntersection.right)))){ return (true); }; _local9 = ((_local6 * cullingRectangle.left) + _local7); if ((((_local9 > rectIntersection.top)) && ((_local9 < rectIntersection.bottom)))){ return (true); }; _local9 = ((_local6 * cullingRectangle.right) + _local7); if ((((_local9 > rectIntersection.top)) && ((_local9 < rectIntersection.bottom)))){ return (true); }; return (false); } } }//package org.papervision3d.core.culling
Section 24
//RectangleParticleCuller (org.papervision3d.core.culling.RectangleParticleCuller) package org.papervision3d.core.culling { import org.papervision3d.core.geom.renderables.*; import flash.geom.*; import org.papervision3d.core.math.util.*; public class RectangleParticleCuller implements IParticleCuller { public var cullingRectangle:Rectangle; private static var vInstance:Vertex3DInstance; private static var testPoint:Point; public function RectangleParticleCuller(_arg1:Rectangle=null){ this.cullingRectangle = _arg1; testPoint = new Point(); } public function testParticle(_arg1:Particle):Boolean{ vInstance = _arg1.vertex3D.vertex3DInstance; if (_arg1.material.invisible == false){ if (vInstance.visible){ if (FastRectangleTools.intersects(_arg1.renderRect, cullingRectangle)){ return (true); }; }; }; return (false); } } }//package org.papervision3d.core.culling
Section 25
//RectangleTriangleCuller (org.papervision3d.core.culling.RectangleTriangleCuller) package org.papervision3d.core.culling { import org.papervision3d.core.geom.renderables.*; import flash.geom.*; import org.papervision3d.core.math.util.*; public class RectangleTriangleCuller extends DefaultTriangleCuller implements ITriangleCuller { public var cullingRectangle:Rectangle; private static const DEFAULT_RECT_X:Number = -((DEFAULT_RECT_W / 2)); private static const DEFAULT_RECT_W:Number = 640; private static const DEFAULT_RECT_H:Number = 480; private static const DEFAULT_RECT_Y:Number = -((DEFAULT_RECT_H / 2)); private static var hitRect:Rectangle = new Rectangle(); public function RectangleTriangleCuller(_arg1:Rectangle=null):void{ cullingRectangle = new Rectangle(DEFAULT_RECT_X, DEFAULT_RECT_Y, DEFAULT_RECT_W, DEFAULT_RECT_H); super(); if (_arg1){ this.cullingRectangle = _arg1; }; } override public function testFace(_arg1:Triangle3D, _arg2:Vertex3DInstance, _arg3:Vertex3DInstance, _arg4:Vertex3DInstance):Boolean{ if (super.testFace(_arg1, _arg2, _arg3, _arg4)){ hitRect.x = Math.min(_arg4.x, Math.min(_arg3.x, _arg2.x)); hitRect.width = (Math.max(_arg4.x, Math.max(_arg3.x, _arg2.x)) + Math.abs(hitRect.x)); hitRect.y = Math.min(_arg4.y, Math.min(_arg3.y, _arg2.y)); hitRect.height = (Math.max(_arg4.y, Math.max(_arg3.y, _arg2.y)) + Math.abs(hitRect.y)); return (FastRectangleTools.intersects(cullingRectangle, hitRect)); }; return (false); } } }//package org.papervision3d.core.culling
Section 26
//ViewportObjectFilter (org.papervision3d.core.culling.ViewportObjectFilter) package org.papervision3d.core.culling { import org.papervision3d.objects.*; import flash.utils.*; public class ViewportObjectFilter implements IObjectCuller { protected var _mode:int; protected var objects:Dictionary; public function ViewportObjectFilter(_arg1:int):void{ this.mode = _arg1; init(); } public function addObject(_arg1:DisplayObject3D):void{ objects[_arg1] = _arg1; } public function removeObject(_arg1:DisplayObject3D):void{ delete objects[_arg1]; } public function set mode(_arg1:int):void{ _mode = _arg1; } public function get mode():int{ return (_mode); } private function init():void{ objects = new Dictionary(true); } public function testObject(_arg1:DisplayObject3D):int{ if (objects[_arg1]){ if (_mode == ViewportObjectFilterMode.INCLUSIVE){ return (1); }; if (_mode == ViewportObjectFilterMode.EXCLUSIVE){ return (0); }; } else { if (_mode == ViewportObjectFilterMode.INCLUSIVE){ return (0); }; if (_mode == ViewportObjectFilterMode.EXCLUSIVE){ return (1); }; }; return (0); } public function destroy():void{ objects = null; } } }//package org.papervision3d.core.culling
Section 27
//ViewportObjectFilterMode (org.papervision3d.core.culling.ViewportObjectFilterMode) package org.papervision3d.core.culling { public class ViewportObjectFilterMode { public static const INCLUSIVE:int = 0; public static const EXCLUSIVE:int = 1; } }//package org.papervision3d.core.culling
Section 28
//UserData (org.papervision3d.core.data.UserData) package org.papervision3d.core.data { public class UserData { public var data; public function UserData(_arg1=null){ this.data = _arg1; } } }//package org.papervision3d.core.data
Section 29
//AbstractRenderable (org.papervision3d.core.geom.renderables.AbstractRenderable) package org.papervision3d.core.geom.renderables { import org.papervision3d.core.render.command.*; import org.papervision3d.objects.*; import org.papervision3d.core.data.*; public class AbstractRenderable implements IRenderable { public var _userData:UserData; public var instance:DisplayObject3D; public function getRenderListItem():IRenderListItem{ return (null); } public function set userData(_arg1:UserData):void{ _userData = _arg1; } public function get userData():UserData{ return (_userData); } } }//package org.papervision3d.core.geom.renderables
Section 30
//IRenderable (org.papervision3d.core.geom.renderables.IRenderable) package org.papervision3d.core.geom.renderables { import org.papervision3d.core.render.command.*; public interface IRenderable { function getRenderListItem():IRenderListItem; } }//package org.papervision3d.core.geom.renderables
Section 31
//Line3D (org.papervision3d.core.geom.renderables.Line3D) package org.papervision3d.core.geom.renderables { import org.papervision3d.core.render.command.*; import org.papervision3d.materials.special.*; import org.papervision3d.core.geom.*; public class Line3D extends AbstractRenderable implements IRenderable { public var size:Number; public var cV:Vertex3D; public var renderCommand:RenderLine; public var material:LineMaterial; public var v0:Vertex3D; public var v1:Vertex3D; public function Line3D(_arg1:Lines3D, _arg2:LineMaterial, _arg3:Number, _arg4:Vertex3D, _arg5:Vertex3D, _arg6:Vertex3D=null){ this.size = _arg3; this.material = _arg2; this.v0 = _arg4; this.v1 = _arg5; this.cV = _arg5; this.instance = _arg1; this.renderCommand = new RenderLine(this); } public function addControlVertex(_arg1:Number, _arg2:Number, _arg3:Number):void{ cV = new Vertex3D(_arg1, _arg2, _arg3); if (instance.geometry.vertices.indexOf(cV) == -1){ instance.geometry.vertices.push(cV); }; } override public function getRenderListItem():IRenderListItem{ return (this.renderCommand); } } }//package org.papervision3d.core.geom.renderables
Section 32
//Particle (org.papervision3d.core.geom.renderables.Particle) package org.papervision3d.core.geom.renderables { import flash.geom.*; import org.papervision3d.core.render.command.*; import org.papervision3d.materials.special.*; public class Particle extends AbstractRenderable implements IRenderable { public var size:Number; public var renderScale:Number; public var vertex3D:Vertex3D; public var renderRect:Rectangle; public var renderCommand:RenderParticle; public var material:ParticleMaterial; public function Particle(_arg1:ParticleMaterial, _arg2:Number=1, _arg3:Number=0, _arg4:Number=0, _arg5:Number=0){ this.material = _arg1; this.size = _arg2; this.renderCommand = new RenderParticle(this); this.renderRect = new Rectangle(); vertex3D = new Vertex3D(_arg3, _arg4, _arg5); } public function get y():Number{ return (vertex3D.y); } public function updateRenderRect():void{ material.updateRenderRect(this); } public function set z(_arg1:Number):void{ vertex3D.z = _arg1; } public function set x(_arg1:Number):void{ vertex3D.x = _arg1; } public function set y(_arg1:Number):void{ vertex3D.y = _arg1; } public function get x():Number{ return (vertex3D.x); } public function get z():Number{ return (vertex3D.z); } override public function getRenderListItem():IRenderListItem{ return (renderCommand); } } }//package org.papervision3d.core.geom.renderables
Section 33
//Triangle3D (org.papervision3d.core.geom.renderables.Triangle3D) package org.papervision3d.core.geom.renderables { import org.papervision3d.core.math.*; import org.papervision3d.core.proto.*; import org.papervision3d.core.render.command.*; import org.papervision3d.objects.*; public class Triangle3D extends AbstractRenderable implements IRenderable { public var vertices:Array; public var v1:Vertex3D; public var face3DInstance:Triangle3DInstance; public var _uvArray:Array; public var visible:Boolean; public var id:Number; public var material:MaterialObject3D; public var renderCommand:RenderTriangle; public var screenZ:Number; public var uv0:NumberUV; public var uv1:NumberUV; public var uv2:NumberUV; public var faceNormal:Number3D; public var _materialName:String; public var v0:Vertex3D; public var v2:Vertex3D; private static var _totalFaces:Number = 0; public function Triangle3D(_arg1:DisplayObject3D, _arg2:Array, _arg3:MaterialObject3D=null, _arg4:Array=null){ this.instance = _arg1; this.renderCommand = new RenderTriangle(this); face3DInstance = new Triangle3DInstance(this, _arg1); faceNormal = new Number3D(); if (((_arg2) && ((_arg2.length == 3)))){ this.vertices = _arg2; v0 = _arg2[0]; v1 = _arg2[1]; v2 = _arg2[2]; createNormal(); } else { _arg2 = new Array(); v0 = (_arg2[0] = new Vertex3D()); v1 = (_arg2[1] = new Vertex3D()); v2 = (_arg2[2] = new Vertex3D()); }; this.material = _arg3; this.uv = _arg4; this.id = _totalFaces++; } public function set uv(_arg1:Array):void{ if (((_arg1) && ((_arg1.length == 3)))){ uv0 = NumberUV(_arg1[0]); uv1 = NumberUV(_arg1[1]); uv2 = NumberUV(_arg1[2]); }; _uvArray = _arg1; } public function createNormal():void{ var _local1:Number3D; var _local2:Number3D; var _local3:Number3D; _local1 = v0.getPosition(); _local2 = v1.getPosition(); _local3 = v2.getPosition(); _local2.minusEq(_local1); _local3.minusEq(_local1); faceNormal = Number3D.cross(_local2, _local3, faceNormal); faceNormal.normalize(); } public function get uv():Array{ return (_uvArray); } public function updateVertices():void{ v0 = vertices[0]; v1 = vertices[1]; v2 = vertices[2]; } override public function getRenderListItem():IRenderListItem{ return (renderCommand); } } }//package org.papervision3d.core.geom.renderables
Section 34
//Triangle3DInstance (org.papervision3d.core.geom.renderables.Triangle3DInstance) package org.papervision3d.core.geom.renderables { import org.papervision3d.core.math.*; import flash.display.*; import org.papervision3d.objects.*; public class Triangle3DInstance { public var container:Sprite; public var faceNormal:Number3D; public var screenZ:Number; public var visible:Boolean;// = false public var instance:DisplayObject3D; public function Triangle3DInstance(_arg1:Triangle3D, _arg2:DisplayObject3D){ visible = false; super(); this.instance = _arg2; faceNormal = new Number3D(); } } }//package org.papervision3d.core.geom.renderables
Section 35
//Vertex3D (org.papervision3d.core.geom.renderables.Vertex3D) package org.papervision3d.core.geom.renderables { import org.papervision3d.core.math.*; import org.papervision3d.core.render.command.*; import flash.utils.*; public class Vertex3D extends AbstractRenderable implements IRenderable { public var vertex3DInstance:Vertex3DInstance; public var extra:Object; public var normal:Number3D; protected var position:Number3D; public var connectedFaces:Dictionary; public var x:Number; public var y:Number; public var z:Number; public function Vertex3D(_arg1:Number=0, _arg2:Number=0, _arg3:Number=0){ position = new Number3D(); super(); this.x = (position.x = _arg1); this.y = (position.y = _arg2); this.z = (position.z = _arg3); this.vertex3DInstance = new Vertex3DInstance(); this.normal = new Number3D(); this.connectedFaces = new Dictionary(); } public function clone():Vertex3D{ var _local1:Vertex3D; _local1 = new Vertex3D(x, y, z); _local1.extra = extra; _local1.vertex3DInstance = vertex3DInstance.clone(); _local1.normal = normal.clone(); return (_local1); } public function getPosition():Number3D{ position.x = x; position.y = y; position.z = z; return (position); } public function toNumber3D():Number3D{ return (new Number3D(x, y, z)); } public function calculateNormal():void{ var _local1:Triangle3D; var _local2:Number; _local2 = 0; normal.reset(); for each (_local1 in connectedFaces) { if (_local1.faceNormal){ _local2++; normal.plusEq(_local1.faceNormal); }; }; normal.x = (normal.x / _local2); normal.y = (normal.y / _local2); normal.z = (normal.z / _local2); normal.normalize(); } override public function getRenderListItem():IRenderListItem{ return (null); } } }//package org.papervision3d.core.geom.renderables
Section 36
//Vertex3DInstance (org.papervision3d.core.geom.renderables.Vertex3DInstance) package org.papervision3d.core.geom.renderables { import org.papervision3d.core.math.*; public class Vertex3DInstance { public var visible:Boolean; public var normal:Number3D; public var extra:Object; public var x:Number; public var y:Number; public var z:Number; public function Vertex3DInstance(_arg1:Number=0, _arg2:Number=0, _arg3:Number=0){ this.x = _arg1; this.y = _arg2; this.z = _arg3; this.visible = false; this.normal = new Number3D(); } public function clone():Vertex3DInstance{ var _local1:Vertex3DInstance; _local1 = new Vertex3DInstance(x, y, z); _local1.visible = visible; _local1.extra = extra; return (_local1); } public static function cross(_arg1:Vertex3DInstance, _arg2:Vertex3DInstance):Number{ return (((_arg1.x * _arg2.y) - (_arg2.x * _arg1.y))); } public static function dot(_arg1:Vertex3DInstance, _arg2:Vertex3DInstance):Number{ return (((_arg1.x * _arg2.x) + (_arg1.y * _arg2.y))); } public static function subTo(_arg1:Vertex3DInstance, _arg2:Vertex3DInstance, _arg3:Vertex3DInstance):void{ _arg3.x = (_arg2.x - _arg1.x); _arg3.y = (_arg2.y - _arg1.y); } public static function sub(_arg1:Vertex3DInstance, _arg2:Vertex3DInstance):Vertex3DInstance{ return (new Vertex3DInstance((_arg2.x - _arg1.x), (_arg2.y - _arg1.y))); } } }//package org.papervision3d.core.geom.renderables
Section 37
//Lines3D (org.papervision3d.core.geom.Lines3D) package org.papervision3d.core.geom { import org.papervision3d.core.geom.renderables.*; import org.papervision3d.core.render.data.*; import org.papervision3d.objects.*; import org.papervision3d.materials.special.*; import org.papervision3d.core.render.draw.*; import org.papervision3d.*; public class Lines3D extends Vertices3D { public var lines:Array; private var _material:ILineDrawer; public function Lines3D(_arg1:LineMaterial, _arg2:String=null){ super(null, _arg2); this.material = _arg1; init(); } private function init():void{ this.lines = new Array(); } override public function project(_arg1:DisplayObject3D, _arg2:RenderSessionData):Number{ var _local3:Line3D; var _local4:Number; super.project(_arg1, _arg2); for each (_local3 in lines) { if (_arg2.viewPort.lineCuller.testLine(_local3)){ _local3.renderCommand.renderer = _local3.material; _local4 = (_local4 + (_local3.renderCommand.screenDepth = ((_local3.v0.vertex3DInstance.z + _local3.v1.vertex3DInstance.z) / 2))); _arg2.renderer.addToRenderList(_local3.renderCommand); }; }; return ((_local4 / (lines.length + 1))); } public function addLine(_arg1:Line3D):void{ lines.push(_arg1); _arg1.instance = this; if (geometry.vertices.indexOf(_arg1.v0) == -1){ geometry.vertices.push(_arg1.v0); }; if (geometry.vertices.indexOf(_arg1.v1) == -1){ geometry.vertices.push(_arg1.v1); }; if (_arg1.cV){ if (geometry.vertices.indexOf(_arg1.cV) == -1){ geometry.vertices.push(_arg1.cV); }; }; } public function addNewSegmentedLine(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:Number, _arg7:Number, _arg8:Number):void{ var _local9:Number; var _local10:Number; var _local11:Number; var _local12:Line3D; var _local13:Vertex3D; var _local14:Vertex3D; var _local15:Number; _local9 = ((_arg6 - _arg3) / _arg2); _local10 = ((_arg7 - _arg4) / _arg2); _local11 = ((_arg8 - _arg5) / _arg2); _local13 = new Vertex3D(_arg3, _arg4, _arg5); _local15 = 0; while (_local15 <= _arg2) { _local14 = new Vertex3D((_arg3 + (_local9 * _local15)), (_arg4 + (_local10 * _local15)), (_arg5 + (_local11 * _local15))); _local12 = new Line3D(this, (material as LineMaterial), _arg1, _local13, _local14); addLine(_local12); _local13 = _local14; _local15++; }; } public function removeAllLines():void{ trace("WARNING - Lines3D.removeAllLines not yet implemented"); } public function removeLine(_arg1:Line3D):void{ var _local2:int; _local2 = lines.indexOf(_arg1); if (_local2 > -1){ lines.splice(_local2, 1); } else { if (Papervision3D.VERBOSE){ trace("Papervision3D Lines3D.removeLine : WARNING removal of non-existant line attempted. "); }; }; } public function addNewLine(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:Number, _arg7:Number):Line3D{ var _local8:Line3D; _local8 = new Line3D(this, (material as LineMaterial), _arg1, new Vertex3D(_arg2, _arg3, _arg4), new Vertex3D(_arg5, _arg6, _arg7)); addLine(_local8); return (_local8); } } }//package org.papervision3d.core.geom
Section 38
//TriangleMesh3D (org.papervision3d.core.geom.TriangleMesh3D) package org.papervision3d.core.geom { import org.papervision3d.core.math.*; import org.papervision3d.core.proto.*; import org.papervision3d.core.geom.renderables.*; import org.papervision3d.core.render.data.*; import org.papervision3d.core.render.command.*; import org.papervision3d.objects.*; import org.papervision3d.core.culling.*; import flash.utils.*; import org.papervision3d.core.render.draw.*; public class TriangleMesh3D extends Vertices3D { public function TriangleMesh3D(_arg1:MaterialObject3D, _arg2:Array, _arg3:Array, _arg4:String=null){ super(_arg2, _arg4); this.geometry.faces = ((_arg3) || (new Array())); this.material = ((_arg1) || (MaterialObject3D.DEFAULT)); } override public function project(_arg1:DisplayObject3D, _arg2:RenderSessionData):Number{ var _local3:Array; var _local4:Number; var _local5:Number; var _local6:ITriangleCuller; var _local7:Vertex3DInstance; var _local8:Vertex3DInstance; var _local9:Vertex3DInstance; var _local10:Triangle3DInstance; var _local11:Triangle3D; var _local12:MaterialObject3D; var _local13:RenderTriangle; super.project(_arg1, _arg2); if (!this.culled){ _local3 = this.geometry.faces; _local4 = 0; _local5 = 0; _local6 = _arg2.triangleCuller; for each (_local11 in _local3) { _local12 = (_local11.material) ? _local11.material : material; _local10 = _local11.face3DInstance; _local7 = _local11.v0.vertex3DInstance; _local8 = _local11.v1.vertex3DInstance; _local9 = _local11.v2.vertex3DInstance; if ((_local10.visible = _local6.testFace(_local11, _local7, _local8, _local9))){ _local4 = (_local4 + (_local10.screenZ = (((_local7.z + _local8.z) + _local9.z) / 3))); _local13 = _local11.renderCommand; _local5++; _local13.renderer = (_local12 as ITriangleDrawer); _local13.screenDepth = _local10.screenZ; _arg2.renderer.addToRenderList(_local13); } else { _arg2.renderStatistics.culledTriangles++; }; }; return ((this.screenZ = (_local4 / _local5))); //unresolved jump }; return (0); } override public function clone():DisplayObject3D{ var _local1:DisplayObject3D; var _local2:TriangleMesh3D; _local1 = super.clone(); _local2 = new TriangleMesh3D(this.material, [], [], _local1.name); if (this.materials){ _local2.materials = this.materials.clone(); }; if (_local1.geometry){ _local2.geometry = _local1.geometry.clone(_local2); }; _local2.copyTransform(this.transform); return (_local2); } public function mergeVertices():void{ var _local1:Dictionary; var _local2:Array; var _local3:Vertex3D; var _local4:Triangle3D; var _local5:Vertex3D; _local1 = new Dictionary(); _local2 = new Array(); for each (_local3 in this.geometry.vertices) { for each (_local5 in _local1) { if ((((((_local3.x == _local5.x)) && ((_local3.y == _local5.y)))) && ((_local3.z == _local5.z)))){ _local1[_local3] = _local5; break; }; }; if (!_local1[_local3]){ _local1[_local3] = _local3; _local2.push(_local3); }; }; this.geometry.vertices = _local2; for each (_local4 in geometry.faces) { _local4.v0 = _local1[_local4.v0]; _local4.v1 = _local1[_local4.v1]; _local4.v2 = _local1[_local4.v2]; }; } override public function set material(_arg1:MaterialObject3D):void{ var _local2:Triangle3D; super.material = _arg1; for each (_local2 in geometry.faces) { _local2.material = _arg1; }; } public function quarterFaces():void{ var _local1:Array; var _local2:Array; var _local3:Array; var _local4:Triangle3D; var _local5:int; var _local6:Vertex3D; var _local7:Vertex3D; var _local8:Vertex3D; var _local9:Vertex3D; var _local10:Vertex3D; var _local11:Vertex3D; var _local12:NumberUV; var _local13:NumberUV; var _local14:NumberUV; var _local15:NumberUV; var _local16:NumberUV; var _local17:NumberUV; var _local18:Triangle3D; var _local19:Triangle3D; var _local20:Triangle3D; var _local21:Triangle3D; _local1 = new Array(); _local2 = new Array(); _local3 = this.geometry.faces; _local5 = _local3.length; while ((_local4 = _local3[--_local5])) { _local6 = _local4.v0; _local7 = _local4.v1; _local8 = _local4.v2; _local9 = new Vertex3D(((_local6.x + _local7.x) / 2), ((_local6.y + _local7.y) / 2), ((_local6.z + _local7.z) / 2)); _local10 = new Vertex3D(((_local7.x + _local8.x) / 2), ((_local7.y + _local8.y) / 2), ((_local7.z + _local8.z) / 2)); _local11 = new Vertex3D(((_local8.x + _local6.x) / 2), ((_local8.y + _local6.y) / 2), ((_local8.z + _local6.z) / 2)); this.geometry.vertices.push(_local9, _local10, _local11); _local12 = _local4.uv[0]; _local13 = _local4.uv[1]; _local14 = _local4.uv[2]; _local15 = new NumberUV(((_local12.u + _local13.u) / 2), ((_local12.v + _local13.v) / 2)); _local16 = new NumberUV(((_local13.u + _local14.u) / 2), ((_local13.v + _local14.v) / 2)); _local17 = new NumberUV(((_local14.u + _local12.u) / 2), ((_local14.v + _local12.v) / 2)); _local18 = new Triangle3D(this, [_local6, _local9, _local11], _local4.material, [_local12, _local15, _local17]); _local19 = new Triangle3D(this, [_local9, _local7, _local10], _local4.material, [_local15, _local13, _local16]); _local20 = new Triangle3D(this, [_local11, _local10, _local8], _local4.material, [_local17, _local16, _local14]); _local21 = new Triangle3D(this, [_local9, _local10, _local11], _local4.material, [_local15, _local16, _local17]); _local2.push(_local18, _local19, _local20, _local21); }; this.geometry.faces = _local2; this.mergeVertices(); this.geometry.ready = true; } public function projectTexture(_arg1:String="x", _arg2:String="y"):void{ var _local3:Array; var _local4:Object; var _local5:Number; var _local6:Number; var _local7:Number; var _local8:Number; var _local9:MaterialObject3D; var _local10:String; var _local11:Triangle3D; var _local12:Array; var _local13:Vertex3D; var _local14:Vertex3D; var _local15:Vertex3D; var _local16:NumberUV; var _local17:NumberUV; var _local18:NumberUV; _local3 = this.geometry.faces; _local4 = this.boundingBox(); _local5 = _local4.min[_arg1]; _local6 = _local4.size[_arg1]; _local7 = _local4.min[_arg2]; _local8 = _local4.size[_arg2]; _local9 = this.material; for (_local10 in _local3) { _local11 = _local3[Number(_local10)]; _local12 = _local11.vertices; _local13 = _local12[0]; _local14 = _local12[1]; _local15 = _local12[2]; _local16 = new NumberUV(((_local13[_arg1] - _local5) / _local6), ((_local13[_arg2] - _local7) / _local8)); _local17 = new NumberUV(((_local14[_arg1] - _local5) / _local6), ((_local14[_arg2] - _local7) / _local8)); _local18 = new NumberUV(((_local15[_arg1] - _local5) / _local6), ((_local15[_arg2] - _local7) / _local8)); _local11.uv = [_local16, _local17, _local18]; }; } } }//package org.papervision3d.core.geom
Section 39
//Vertices3D (org.papervision3d.core.geom.Vertices3D) package org.papervision3d.core.geom { import org.papervision3d.core.math.*; import org.papervision3d.core.proto.*; import org.papervision3d.core.geom.renderables.*; import org.papervision3d.core.render.data.*; import flash.geom.*; import org.papervision3d.objects.*; import org.papervision3d.core.culling.*; public class Vertices3D extends DisplayObject3D { public function Vertices3D(_arg1:Array, _arg2:String=null){ super(_arg2, new GeometryObject3D()); this.geometry.vertices = ((_arg1) || (new Array())); } public function projectFrustum(_arg1:DisplayObject3D, _arg2:RenderSessionData):Number{ var _local3:Matrix3D; var _local4:Rectangle; 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:Vertex3D; var _local27:Vertex3DInstance; var _local28:Array; var _local29:int; _local3 = this.view; _local4 = _arg2.camera.viewport; _local5 = _local3.n11; _local6 = _local3.n12; _local7 = _local3.n13; _local8 = _local3.n21; _local9 = _local3.n22; _local10 = _local3.n23; _local11 = _local3.n31; _local12 = _local3.n32; _local13 = _local3.n33; _local14 = _local3.n41; _local15 = _local3.n42; _local16 = _local3.n43; _local24 = (_local4.width / 2); _local25 = (_local4.height / 2); _local28 = this.geometry.vertices; _local29 = _local28.length; while ((_local26 = _local28[--_local29])) { _local17 = _local26.x; _local18 = _local26.y; _local19 = _local26.z; _local22 = ((((_local17 * _local11) + (_local18 * _local12)) + (_local19 * _local13)) + _local3.n34); _local23 = ((((_local17 * _local14) + (_local18 * _local15)) + (_local19 * _local16)) + _local3.n44); _local27 = _local26.vertex3DInstance; _local22 = (_local22 / _local23); if ((_local27.visible = (((_local22 > 0)) && ((_local22 < 1))))){ _local20 = (((((_local17 * _local5) + (_local18 * _local6)) + (_local19 * _local7)) + _local3.n14) / _local23); _local21 = (((((_local17 * _local8) + (_local18 * _local9)) + (_local19 * _local10)) + _local3.n24) / _local23); _local27.x = (_local20 * _local24); _local27.y = (_local21 * _local25); _local27.z = (_local22 * _local23); }; }; return (0); } override public function project(_arg1:DisplayObject3D, _arg2:RenderSessionData):Number{ var _local3:Matrix3D; 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:Vertex3D; var _local20:Vertex3DInstance; var _local21:Number; var _local22:Array; var _local23:int; var _local24:Number; var _local25:Number; super.project(_arg1, _arg2); if (this.culled){ return (0); }; if ((_arg2.camera is IObjectCuller)){ return (projectFrustum(_arg1, _arg2)); }; _local3 = this.view; _local4 = _local3.n11; _local5 = _local3.n12; _local6 = _local3.n13; _local7 = _local3.n21; _local8 = _local3.n22; _local9 = _local3.n23; _local10 = _local3.n31; _local11 = _local3.n32; _local12 = _local3.n33; _local22 = this.geometry.vertices; _local23 = _local22.length; _local24 = _arg2.camera.focus; _local25 = (_local24 * _arg2.camera.zoom); while ((_local19 = _local22[--_local23])) { _local13 = _local19.x; _local14 = _local19.y; _local15 = _local19.z; _local18 = ((((_local13 * _local10) + (_local14 * _local11)) + (_local15 * _local12)) + _local3.n34); _local20 = _local19.vertex3DInstance; if ((_local20.visible = ((_local24 + _local18) > 0))){ _local16 = ((((_local13 * _local4) + (_local14 * _local5)) + (_local15 * _local6)) + _local3.n14); _local17 = ((((_local13 * _local7) + (_local14 * _local8)) + (_local15 * _local9)) + _local3.n24); _local21 = (_local25 / (_local24 + _local18)); _local20.x = (_local16 * _local21); _local20.y = (_local17 * _local21); _local20.z = _local18; }; }; return (0); } override public function clone():DisplayObject3D{ var _local1:DisplayObject3D; var _local2:Vertices3D; _local1 = super.clone(); _local2 = new Vertices3D(null, _local1.name); _local2.material = _local1.material; if (_local1.materials){ _local2.materials = _local1.materials.clone(); }; if (this.geometry){ _local2.geometry = this.geometry.clone(_local2); }; _local2.copyTransform(this.transform); return (_local2); } public function transformVertices(_arg1:Matrix3D):void{ geometry.transformVertices(_arg1); } public function boundingBox():Object{ var _local1:Array; var _local2:Object; var _local3:Vertex3D; _local1 = this.geometry.vertices; _local2 = new Object(); _local2.min = new Number3D(Number.MAX_VALUE, Number.MAX_VALUE, Number.MAX_VALUE); _local2.max = new Number3D(-(Number.MAX_VALUE), -(Number.MAX_VALUE), -(Number.MAX_VALUE)); _local2.size = new Number3D(); for each (_local3 in _local1) { _local2.min.x = Math.min(_local3.x, _local2.min.x); _local2.min.y = Math.min(_local3.y, _local2.min.y); _local2.min.z = Math.min(_local3.z, _local2.min.z); _local2.max.x = Math.max(_local3.x, _local2.max.x); _local2.max.y = Math.max(_local3.y, _local2.max.y); _local2.max.z = Math.max(_local3.z, _local2.max.z); }; _local2.size.x = (_local2.max.x - _local2.min.x); _local2.size.y = (_local2.max.y - _local2.min.y); _local2.size.z = (_local2.max.z - _local2.min.z); return (_local2); } } }//package org.papervision3d.core.geom
Section 40
//TriangleMaterial (org.papervision3d.core.material.TriangleMaterial) package org.papervision3d.core.material { import org.papervision3d.core.proto.*; import org.papervision3d.core.geom.renderables.*; import flash.display.*; import org.papervision3d.core.render.data.*; import flash.geom.*; import org.papervision3d.core.render.draw.*; public class TriangleMaterial extends MaterialObject3D implements ITriangleDrawer { override public function drawTriangle(_arg1:Triangle3D, _arg2:Graphics, _arg3:RenderSessionData, _arg4:BitmapData=null, _arg5:Matrix=null):void{ } } }//package org.papervision3d.core.material
Section 41
//ClassificationUtil (org.papervision3d.core.math.util.ClassificationUtil) package org.papervision3d.core.math.util { import org.papervision3d.core.math.*; import org.papervision3d.core.geom.renderables.*; public class ClassificationUtil { public static const BACK:uint = 1; public static const STRADDLE:uint = 3; public static const FRONT:uint = 0; public static const COINCIDING:uint = 2; protected static var point:Vertex3D; public static function classifyPoint(_arg1:Vertex3D, _arg2:Plane3D, _arg3:Number=0.01):uint{ var _local4:Number; _local4 = _arg2.vertDistance(_arg1); if (_local4 < -(_arg3)){ return (BACK); }; if (_local4 > _arg3){ return (FRONT); }; return (COINCIDING); } public static function classifyTriangle(_arg1:Triangle3D, _arg2:Plane3D, _arg3:Number=0.01):uint{ if (!_arg1){ return (null); }; return (classifyPoints([_arg1.v0, _arg1.v1, _arg1.v2], _arg2, _arg3)); } public static function classifyPoints(_arg1:Array, _arg2:Plane3D, _arg3:Number=0.01):uint{ var _local4:uint; var _local5:uint; var _local6:uint; _local4 = 0; _local5 = 0; for each (point in _arg1) { _local6 = classifyPoint(point, _arg2, _arg3); if (_local6 == FRONT){ _local4++; } else { if (_local6 == BACK){ _local5++; }; }; }; if ((((_local4 > 0)) && ((_local5 == 0)))){ return (FRONT); }; if ((((_local4 == 0)) && ((_local5 > 0)))){ return (BACK); }; if ((((_local4 > 0)) && ((_local5 > 0)))){ return (STRADDLE); }; return (COINCIDING); } } }//package org.papervision3d.core.math.util
Section 42
//FastRectangleTools (org.papervision3d.core.math.util.FastRectangleTools) package org.papervision3d.core.math.util { import flash.geom.*; public class FastRectangleTools { public static function intersection(_arg1:Rectangle, _arg2:Rectangle, _arg3:Rectangle=null):Rectangle{ if (!_arg3){ _arg3 = new Rectangle(); }; if (!intersects(_arg1, _arg2)){ _arg3.x = (_arg3.y = (_arg3.width = (_arg3.height = 0))); return (_arg3); }; _arg3.left = ((_arg1.left)>_arg2.left) ? _arg1.left : _arg2.left; _arg3.right = ((_arg1.right)<_arg2.right) ? _arg1.right : _arg2.right; _arg3.top = ((_arg1.top)>_arg2.top) ? _arg1.top : _arg2.top; _arg3.bottom = ((_arg1.bottom)<_arg2.bottom) ? _arg1.bottom : _arg2.bottom; return (_arg3); } public static function intersects(_arg1:Rectangle, _arg2:Rectangle):Boolean{ if (!(((_arg1.right < _arg2.left)) || ((_arg1.left > _arg2.right)))){ if (!(((_arg1.bottom < _arg2.top)) || ((_arg1.top > _arg2.bottom)))){ return (true); }; }; return (false); } } }//package org.papervision3d.core.math.util
Section 43
//AxisAlignedBoundingBox (org.papervision3d.core.math.AxisAlignedBoundingBox) package org.papervision3d.core.math { import org.papervision3d.core.geom.renderables.*; public class AxisAlignedBoundingBox { public var minX:Number; public var minY:Number; public var minZ:Number; public var maxX:Number; public var maxY:Number; protected var _vertices:Array; public var maxZ:Number; public function AxisAlignedBoundingBox(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:Number){ this.minX = _arg1; this.minY = _arg2; this.minZ = _arg3; this.maxX = _arg4; this.maxY = _arg5; this.maxZ = _arg6; createBoxVertices(); } protected function createBoxVertices():void{ _vertices = new Array(); _vertices.push(new Vertex3D(minX, minY, minZ)); _vertices.push(new Vertex3D(minX, minY, maxZ)); _vertices.push(new Vertex3D(minX, maxY, minZ)); _vertices.push(new Vertex3D(minX, maxY, maxZ)); _vertices.push(new Vertex3D(maxX, minY, minZ)); _vertices.push(new Vertex3D(maxX, minY, maxZ)); _vertices.push(new Vertex3D(maxX, maxY, minZ)); _vertices.push(new Vertex3D(maxX, maxY, maxZ)); } public function getBoxVertices():Array{ return (_vertices); } public static function createFromVertices(_arg1:Array):AxisAlignedBoundingBox{ var _local2:Number; var _local3:Number; var _local4:Number; var _local5:Number; var _local6:Number; var _local7:Number; var _local8:Vertex3D; _local2 = 0; _local3 = 0; _local4 = 0; _local5 = 0; _local6 = 0; _local7 = 0; for each (_local8 in _arg1) { _local2 = ((_local8.x)<_local2) ? _local8.x : _local2; _local4 = ((_local8.y)<_local4) ? _local8.y : _local4; _local6 = ((_local8.z)<_local6) ? _local8.z : _local6; _local3 = ((_local8.x)>_local3) ? _local8.x : _local3; _local5 = ((_local8.y)>_local5) ? _local8.y : _local5; _local7 = ((_local8.z)>_local7) ? _local8.z : _local7; }; return (new AxisAlignedBoundingBox(_local2, _local4, _local6, _local3, _local5, _local7)); } } }//package org.papervision3d.core.math
Section 44
//BoundingSphere (org.papervision3d.core.math.BoundingSphere) package org.papervision3d.core.math { import org.papervision3d.core.geom.renderables.*; public class BoundingSphere { public var maxDistance:Number; public var radius:Number; public function BoundingSphere(_arg1:Number){ this.maxDistance = _arg1; this.radius = Math.sqrt(_arg1); } public static function getFromVertices(_arg1:Array):BoundingSphere{ var _local2:Number; var _local3:Number; var _local4:Vertex3D; _local2 = 0; for each (_local4 in _arg1) { _local3 = (((_local4.x * _local4.x) + (_local4.y * _local4.y)) + (_local4.z * _local4.z)); _local2 = ((_local3)>_local2) ? _local3 : _local2; }; return (new BoundingSphere(_local2)); } } }//package org.papervision3d.core.math
Section 45
//Matrix3D (org.papervision3d.core.math.Matrix3D) package org.papervision3d.core.math { public class Matrix3D { public var n31:Number; public var n32:Number; public var n11:Number; public var n13:Number; public var n14:Number; public var n33:Number; public var n12:Number; public var n42:Number; public var n21:Number; public var n22:Number; public var n23:Number; public var n24:Number; public var n34:Number; public var n41:Number; public var n43:Number; public var n44:Number; private static var _cos:Function = Math.cos; private static var _sin:Function = Math.sin; private static var temp:Matrix3D = Matrix3D.IDENTITY; private static var n3Di:Number3D = Number3D.ZERO; private static var n3Dj:Number3D = Number3D.ZERO; private static var n3Dk:Number3D = Number3D.ZERO; private static var toDEGREES:Number = 57.2957795130823; private static var toRADIANS:Number = 0.0174532925199433; public function Matrix3D(_arg1:Array=null){ reset(_arg1); } public function calculateMultiply3x3(_arg1:Matrix3D, _arg2:Matrix3D):void{ 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; _local3 = _arg1.n11; _local4 = _arg2.n11; _local5 = _arg1.n21; _local6 = _arg2.n21; _local7 = _arg1.n31; _local8 = _arg2.n31; _local9 = _arg1.n12; _local10 = _arg2.n12; _local11 = _arg1.n22; _local12 = _arg2.n22; _local13 = _arg1.n32; _local14 = _arg2.n32; _local15 = _arg1.n13; _local16 = _arg2.n13; _local17 = _arg1.n23; _local18 = _arg2.n23; _local19 = _arg1.n33; _local20 = _arg2.n33; this.n11 = (((_local3 * _local4) + (_local9 * _local6)) + (_local15 * _local8)); this.n12 = (((_local3 * _local10) + (_local9 * _local12)) + (_local15 * _local14)); this.n13 = (((_local3 * _local16) + (_local9 * _local18)) + (_local15 * _local20)); this.n21 = (((_local5 * _local4) + (_local11 * _local6)) + (_local17 * _local8)); this.n22 = (((_local5 * _local10) + (_local11 * _local12)) + (_local17 * _local14)); this.n23 = (((_local5 * _local16) + (_local11 * _local18)) + (_local17 * _local20)); this.n31 = (((_local7 * _local4) + (_local13 * _local6)) + (_local19 * _local8)); this.n32 = (((_local7 * _local10) + (_local13 * _local12)) + (_local19 * _local14)); this.n33 = (((_local7 * _local16) + (_local13 * _local18)) + (_local19 * _local20)); } public function calculateMultiply4x4(_arg1:Matrix3D, _arg2:Matrix3D):void{ 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; var _local34:Number; _local3 = _arg1.n11; _local4 = _arg2.n11; _local5 = _arg1.n21; _local6 = _arg2.n21; _local7 = _arg1.n31; _local8 = _arg2.n31; _local9 = _arg1.n41; _local10 = _arg2.n41; _local11 = _arg1.n12; _local12 = _arg2.n12; _local13 = _arg1.n22; _local14 = _arg2.n22; _local15 = _arg1.n32; _local16 = _arg2.n32; _local17 = _arg1.n42; _local18 = _arg2.n42; _local19 = _arg1.n13; _local20 = _arg2.n13; _local21 = _arg1.n23; _local22 = _arg2.n23; _local23 = _arg1.n33; _local24 = _arg2.n33; _local25 = _arg1.n43; _local26 = _arg2.n43; _local27 = _arg1.n14; _local28 = _arg2.n14; _local29 = _arg1.n24; _local30 = _arg2.n24; _local31 = _arg1.n34; _local32 = _arg2.n34; _local33 = _arg1.n44; _local34 = _arg2.n44; this.n11 = (((_local3 * _local4) + (_local11 * _local6)) + (_local19 * _local8)); this.n12 = (((_local3 * _local12) + (_local11 * _local14)) + (_local19 * _local16)); this.n13 = (((_local3 * _local20) + (_local11 * _local22)) + (_local19 * _local24)); this.n14 = ((((_local3 * _local28) + (_local11 * _local30)) + (_local19 * _local32)) + _local27); this.n21 = (((_local5 * _local4) + (_local13 * _local6)) + (_local21 * _local8)); this.n22 = (((_local5 * _local12) + (_local13 * _local14)) + (_local21 * _local16)); this.n23 = (((_local5 * _local20) + (_local13 * _local22)) + (_local21 * _local24)); this.n24 = ((((_local5 * _local28) + (_local13 * _local30)) + (_local21 * _local32)) + _local29); this.n31 = (((_local7 * _local4) + (_local15 * _local6)) + (_local23 * _local8)); this.n32 = (((_local7 * _local12) + (_local15 * _local14)) + (_local23 * _local16)); this.n33 = (((_local7 * _local20) + (_local15 * _local22)) + (_local23 * _local24)); this.n34 = ((((_local7 * _local28) + (_local15 * _local30)) + (_local23 * _local32)) + _local31); this.n41 = (((_local9 * _local4) + (_local17 * _local6)) + (_local25 * _local8)); this.n42 = (((_local9 * _local12) + (_local17 * _local14)) + (_local25 * _local16)); this.n43 = (((_local9 * _local20) + (_local17 * _local22)) + (_local25 * _local24)); this.n44 = ((((_local9 * _local28) + (_local17 * _local30)) + (_local25 * _local32)) + _local33); } public function get det():Number{ return ((((((this.n11 * this.n22) - (this.n21 * this.n12)) * this.n33) - (((this.n11 * this.n32) - (this.n31 * this.n12)) * this.n23)) + (((this.n21 * this.n32) - (this.n31 * this.n22)) * this.n13))); } public function copy(_arg1:Matrix3D):Matrix3D{ this.n11 = _arg1.n11; this.n12 = _arg1.n12; this.n13 = _arg1.n13; this.n14 = _arg1.n14; this.n21 = _arg1.n21; this.n22 = _arg1.n22; this.n23 = _arg1.n23; this.n24 = _arg1.n24; this.n31 = _arg1.n31; this.n32 = _arg1.n32; this.n33 = _arg1.n33; this.n34 = _arg1.n34; return (this); } public function copy3x3(_arg1:Matrix3D):Matrix3D{ this.n11 = _arg1.n11; this.n12 = _arg1.n12; this.n13 = _arg1.n13; this.n21 = _arg1.n21; this.n22 = _arg1.n22; this.n23 = _arg1.n23; this.n31 = _arg1.n31; this.n32 = _arg1.n32; this.n33 = _arg1.n33; return (this); } public function calculateAdd(_arg1:Matrix3D, _arg2:Matrix3D):void{ this.n11 = (_arg1.n11 + _arg2.n11); this.n12 = (_arg1.n12 + _arg2.n12); this.n13 = (_arg1.n13 + _arg2.n13); this.n14 = (_arg1.n14 + _arg2.n14); this.n21 = (_arg1.n21 + _arg2.n21); this.n22 = (_arg1.n22 + _arg2.n22); this.n23 = (_arg1.n23 + _arg2.n23); this.n24 = (_arg1.n24 + _arg2.n24); this.n31 = (_arg1.n31 + _arg2.n31); this.n32 = (_arg1.n32 + _arg2.n32); this.n33 = (_arg1.n33 + _arg2.n33); this.n34 = (_arg1.n34 + _arg2.n34); } public function calculateMultiply(_arg1:Matrix3D, _arg2:Matrix3D):void{ 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; _local3 = _arg1.n11; _local4 = _arg2.n11; _local5 = _arg1.n21; _local6 = _arg2.n21; _local7 = _arg1.n31; _local8 = _arg2.n31; _local9 = _arg1.n12; _local10 = _arg2.n12; _local11 = _arg1.n22; _local12 = _arg2.n22; _local13 = _arg1.n32; _local14 = _arg2.n32; _local15 = _arg1.n13; _local16 = _arg2.n13; _local17 = _arg1.n23; _local18 = _arg2.n23; _local19 = _arg1.n33; _local20 = _arg2.n33; _local21 = _arg1.n14; _local22 = _arg2.n14; _local23 = _arg1.n24; _local24 = _arg2.n24; _local25 = _arg1.n34; _local26 = _arg2.n34; this.n11 = (((_local3 * _local4) + (_local9 * _local6)) + (_local15 * _local8)); this.n12 = (((_local3 * _local10) + (_local9 * _local12)) + (_local15 * _local14)); this.n13 = (((_local3 * _local16) + (_local9 * _local18)) + (_local15 * _local20)); this.n14 = ((((_local3 * _local22) + (_local9 * _local24)) + (_local15 * _local26)) + _local21); this.n21 = (((_local5 * _local4) + (_local11 * _local6)) + (_local17 * _local8)); this.n22 = (((_local5 * _local10) + (_local11 * _local12)) + (_local17 * _local14)); this.n23 = (((_local5 * _local16) + (_local11 * _local18)) + (_local17 * _local20)); this.n24 = ((((_local5 * _local22) + (_local11 * _local24)) + (_local17 * _local26)) + _local23); this.n31 = (((_local7 * _local4) + (_local13 * _local6)) + (_local19 * _local8)); this.n32 = (((_local7 * _local10) + (_local13 * _local12)) + (_local19 * _local14)); this.n33 = (((_local7 * _local16) + (_local13 * _local18)) + (_local19 * _local20)); this.n34 = ((((_local7 * _local22) + (_local13 * _local24)) + (_local19 * _local26)) + _local25); } public function invert():void{ temp.copy(this); calculateInverse(temp); } public function calculateInverse(_arg1:Matrix3D):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; _local2 = _arg1.det; if (Math.abs(_local2) > 0.001){ _local2 = (1 / _local2); _local3 = _arg1.n11; _local4 = _arg1.n21; _local5 = _arg1.n31; _local6 = _arg1.n12; _local7 = _arg1.n22; _local8 = _arg1.n32; _local9 = _arg1.n13; _local10 = _arg1.n23; _local11 = _arg1.n33; _local12 = _arg1.n14; _local13 = _arg1.n24; _local14 = _arg1.n34; this.n11 = (_local2 * ((_local7 * _local11) - (_local8 * _local10))); this.n12 = (-(_local2) * ((_local6 * _local11) - (_local8 * _local9))); this.n13 = (_local2 * ((_local6 * _local10) - (_local7 * _local9))); this.n14 = (-(_local2) * (((_local6 * ((_local10 * _local14) - (_local11 * _local13))) - (_local7 * ((_local9 * _local14) - (_local11 * _local12)))) + (_local8 * ((_local9 * _local13) - (_local10 * _local12))))); this.n21 = (-(_local2) * ((_local4 * _local11) - (_local5 * _local10))); this.n22 = (_local2 * ((_local3 * _local11) - (_local5 * _local9))); this.n23 = (-(_local2) * ((_local3 * _local10) - (_local4 * _local9))); this.n24 = (_local2 * (((_local3 * ((_local10 * _local14) - (_local11 * _local13))) - (_local4 * ((_local9 * _local14) - (_local11 * _local12)))) + (_local5 * ((_local9 * _local13) - (_local10 * _local12))))); this.n31 = (_local2 * ((_local4 * _local8) - (_local5 * _local7))); this.n32 = (-(_local2) * ((_local3 * _local8) - (_local5 * _local6))); this.n33 = (_local2 * ((_local3 * _local7) - (_local4 * _local6))); this.n34 = (-(_local2) * (((_local3 * ((_local7 * _local14) - (_local8 * _local13))) - (_local4 * ((_local6 * _local14) - (_local8 * _local12)))) + (_local5 * ((_local6 * _local13) - (_local7 * _local12))))); }; } public function toString():String{ var _local1:String; _local1 = ""; _local1 = (_local1 + ((((((((int((n11 * 1000)) / 1000) + "\t\t") + (int((n12 * 1000)) / 1000)) + "\t\t") + (int((n13 * 1000)) / 1000)) + "\t\t") + (int((n14 * 1000)) / 1000)) + "\n")); _local1 = (_local1 + ((((((((int((n21 * 1000)) / 1000) + "\t\t") + (int((n22 * 1000)) / 1000)) + "\t\t") + (int((n23 * 1000)) / 1000)) + "\t\t") + (int((n24 * 1000)) / 1000)) + "\n")); _local1 = (_local1 + ((((((((int((n31 * 1000)) / 1000) + "\t\t") + (int((n32 * 1000)) / 1000)) + "\t\t") + (int((n33 * 1000)) / 1000)) + "\t\t") + (int((n34 * 1000)) / 1000)) + "\n")); _local1 = (_local1 + ((((((((int((n41 * 1000)) / 1000) + "\t\t") + (int((n42 * 1000)) / 1000)) + "\t\t") + (int((n43 * 1000)) / 1000)) + "\t\t") + (int((n44 * 1000)) / 1000)) + "\n")); return (_local1); } public function reset(_arg1:Array=null):void{ if (((!(_arg1)) || ((_arg1.length < 12)))){ n11 = (n22 = (n33 = (n44 = 1))); n12 = (n13 = (n14 = (n21 = (n23 = (n24 = (n31 = (n32 = (n34 = (n41 = (n42 = (n43 = 0))))))))))); } else { n11 = _arg1[0]; n12 = _arg1[1]; n13 = _arg1[2]; n14 = _arg1[3]; n21 = _arg1[4]; n22 = _arg1[5]; n23 = _arg1[6]; n24 = _arg1[7]; n31 = _arg1[8]; n32 = _arg1[9]; n33 = _arg1[10]; n34 = _arg1[11]; if (_arg1.length == 16){ n41 = _arg1[12]; n42 = _arg1[13]; n43 = _arg1[14]; n44 = _arg1[15]; } else { n41 = (n42 = (n43 = 0)); n44 = 1; }; }; } public static function rotationMatrixWithReference(_arg1:Number3D, _arg2:Number, _arg3:Number3D):Matrix3D{ var _local4:Matrix3D; _local4 = Matrix3D.translationMatrix(_arg3.x, -(_arg3.y), _arg3.z); Matrix3D.translationMatrix(_arg3.x, -(_arg3.y), _arg3.z).calculateMultiply(_local4, Matrix3D.rotationMatrix(_arg1.x, _arg1.y, _arg1.z, _arg2)); _local4.calculateMultiply(_local4, Matrix3D.translationMatrix(-(_arg3.x), _arg3.y, -(_arg3.z))); return (_local4); } public static function multiplyVector(_arg1:Matrix3D, _arg2:Number3D):void{ var _local3:Number; var _local4:Number; var _local5:Number; _local3 = _arg2.x; _local4 = _arg2.y; _local5 = _arg2.z; _arg2.x = ((((_local3 * _arg1.n11) + (_local4 * _arg1.n12)) + (_local5 * _arg1.n13)) + _arg1.n14); _arg2.y = ((((_local3 * _arg1.n21) + (_local4 * _arg1.n22)) + (_local5 * _arg1.n23)) + _arg1.n24); _arg2.z = ((((_local3 * _arg1.n31) + (_local4 * _arg1.n32)) + (_local5 * _arg1.n33)) + _arg1.n34); } public static function multiplyVector4x4(_arg1:Matrix3D, _arg2:Number3D):void{ var _local3:Number; var _local4:Number; var _local5:Number; var _local6:Number; _local3 = _arg2.x; _local4 = _arg2.y; _local5 = _arg2.z; _local6 = (1 / ((((_local3 * _arg1.n41) + (_local4 * _arg1.n42)) + (_local5 * _arg1.n43)) + _arg1.n44)); _arg2.x = ((((_local3 * _arg1.n11) + (_local4 * _arg1.n12)) + (_local5 * _arg1.n13)) + _arg1.n14); _arg2.y = ((((_local3 * _arg1.n21) + (_local4 * _arg1.n22)) + (_local5 * _arg1.n23)) + _arg1.n24); _arg2.z = ((((_local3 * _arg1.n31) + (_local4 * _arg1.n32)) + (_local5 * _arg1.n33)) + _arg1.n34); _arg2.x = (_arg2.x * _local6); _arg2.y = (_arg2.y * _local6); _arg2.z = (_arg2.z * _local6); } public static function multiply3x3(_arg1:Matrix3D, _arg2:Matrix3D):Matrix3D{ var _local3:Matrix3D; _local3 = new (Matrix3D); _local3.calculateMultiply3x3(_arg1, _arg2); return (_local3); } public static function normalizeQuaternion(_arg1:Object):Object{ var _local2:Number; _local2 = magnitudeQuaternion(_arg1); _arg1.x = (_arg1.x / _local2); _arg1.y = (_arg1.y / _local2); _arg1.z = (_arg1.z / _local2); _arg1.w = (_arg1.w / _local2); return (_arg1); } public static function multiplyVector3x3(_arg1:Matrix3D, _arg2:Number3D):void{ var _local3:Number; var _local4:Number; var _local5:Number; _local3 = _arg2.x; _local4 = _arg2.y; _local5 = _arg2.z; _arg2.x = (((_local3 * _arg1.n11) + (_local4 * _arg1.n12)) + (_local5 * _arg1.n13)); _arg2.y = (((_local3 * _arg1.n21) + (_local4 * _arg1.n22)) + (_local5 * _arg1.n23)); _arg2.z = (((_local3 * _arg1.n31) + (_local4 * _arg1.n32)) + (_local5 * _arg1.n33)); } public static function axis2quaternion(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):Object{ var _local5:Number; var _local6:Number; var _local7:Object; _local5 = Math.sin((_arg4 / 2)); _local6 = Math.cos((_arg4 / 2)); _local7 = new Object(); _local7.x = (_arg1 * _local5); _local7.y = (_arg2 * _local5); _local7.z = (_arg3 * _local5); _local7.w = _local6; return (normalizeQuaternion(_local7)); } public static function translationMatrix(_arg1:Number, _arg2:Number, _arg3:Number):Matrix3D{ var _local4:Matrix3D; _local4 = IDENTITY; _local4.n14 = _arg1; _local4.n24 = _arg2; _local4.n34 = _arg3; return (_local4); } public static function magnitudeQuaternion(_arg1:Object):Number{ return (Math.sqrt(((((_arg1.w * _arg1.w) + (_arg1.x * _arg1.x)) + (_arg1.y * _arg1.y)) + (_arg1.z * _arg1.z)))); } public static function rotationX(_arg1:Number):Matrix3D{ var _local2:Matrix3D; var _local3:Number; var _local4:Number; _local2 = IDENTITY; _local3 = Math.cos(_arg1); _local4 = Math.sin(_arg1); _local2.n22 = _local3; _local2.n23 = -(_local4); _local2.n32 = _local4; _local2.n33 = _local3; return (_local2); } public static function rotationY(_arg1:Number):Matrix3D{ var _local2:Matrix3D; var _local3:Number; var _local4:Number; _local2 = IDENTITY; _local3 = Math.cos(_arg1); _local4 = Math.sin(_arg1); _local2.n11 = _local3; _local2.n13 = -(_local4); _local2.n31 = _local4; _local2.n33 = _local3; return (_local2); } public static function rotationZ(_arg1:Number):Matrix3D{ var _local2:Matrix3D; var _local3:Number; var _local4:Number; _local2 = IDENTITY; _local3 = Math.cos(_arg1); _local4 = Math.sin(_arg1); _local2.n11 = _local3; _local2.n12 = -(_local4); _local2.n21 = _local4; _local2.n22 = _local3; return (_local2); } public static function clone(_arg1:Matrix3D):Matrix3D{ return (new Matrix3D([_arg1.n11, _arg1.n12, _arg1.n13, _arg1.n14, _arg1.n21, _arg1.n22, _arg1.n23, _arg1.n24, _arg1.n31, _arg1.n32, _arg1.n33, _arg1.n34])); } public static function rotationMatrix(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Matrix3D=null):Matrix3D{ var _local6:Matrix3D; 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; if (!_arg5){ _local6 = IDENTITY; } else { _local6 = _arg5; }; _local7 = Math.cos(_arg4); _local8 = Math.sin(_arg4); _local9 = (1 - _local7); _local10 = ((_arg1 * _arg2) * _local9); _local11 = ((_arg2 * _arg3) * _local9); _local12 = ((_arg1 * _arg3) * _local9); _local13 = (_local8 * _arg3); _local14 = (_local8 * _arg2); _local15 = (_local8 * _arg1); _local6.n11 = (_local7 + ((_arg1 * _arg1) * _local9)); _local6.n12 = (-(_local13) + _local10); _local6.n13 = (_local14 + _local12); _local6.n21 = (_local13 + _local10); _local6.n22 = (_local7 + ((_arg2 * _arg2) * _local9)); _local6.n23 = (-(_local15) + _local11); _local6.n31 = (-(_local14) + _local12); _local6.n32 = (_local15 + _local11); _local6.n33 = (_local7 + ((_arg3 * _arg3) * _local9)); return (_local6); } public static function add(_arg1:Matrix3D, _arg2:Matrix3D):Matrix3D{ var _local3:Matrix3D; _local3 = new (Matrix3D); _local3.calculateAdd(_arg1, _arg2); return (_local3); } public static function multiply(_arg1:Matrix3D, _arg2:Matrix3D):Matrix3D{ var _local3:Matrix3D; _local3 = new (Matrix3D); _local3.calculateMultiply(_arg1, _arg2); return (_local3); } public static function euler2quaternion(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Quaternion=null):Quaternion{ 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:Quaternion; _local5 = Math.sin((_arg1 * 0.5)); _local6 = Math.cos((_arg1 * 0.5)); _local7 = Math.sin((_arg2 * 0.5)); _local8 = Math.cos((_arg2 * 0.5)); _local9 = Math.sin((_arg3 * 0.5)); _local10 = Math.cos((_arg3 * 0.5)); _local11 = (_local6 * _local8); _local12 = (_local5 * _local7); if (!_arg4){ _local13 = new Quaternion(); } else { _local13 = _arg4; }; _local13.x = ((_local9 * _local11) - (_local10 * _local12)); _local13.y = (((_local10 * _local5) * _local8) + ((_local9 * _local6) * _local7)); _local13.z = (((_local10 * _local6) * _local7) - ((_local9 * _local5) * _local8)); _local13.w = ((_local10 * _local11) + (_local9 * _local12)); return (_local13); } public static function quaternion2matrix(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Matrix3D=null):Matrix3D{ 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:Matrix3D; _local6 = (_arg1 * _arg1); _local7 = (_arg1 * _arg2); _local8 = (_arg1 * _arg3); _local9 = (_arg1 * _arg4); _local10 = (_arg2 * _arg2); _local11 = (_arg2 * _arg3); _local12 = (_arg2 * _arg4); _local13 = (_arg3 * _arg3); _local14 = (_arg3 * _arg4); if (!_arg5){ _local15 = IDENTITY; } else { _local15 = _arg5; }; _local15.n11 = (1 - (2 * (_local10 + _local13))); _local15.n12 = (2 * (_local7 - _local14)); _local15.n13 = (2 * (_local8 + _local12)); _local15.n21 = (2 * (_local7 + _local14)); _local15.n22 = (1 - (2 * (_local6 + _local13))); _local15.n23 = (2 * (_local11 - _local9)); _local15.n31 = (2 * (_local8 - _local12)); _local15.n32 = (2 * (_local11 + _local9)); _local15.n33 = (1 - (2 * (_local6 + _local10))); return (_local15); } public static function inverse(_arg1:Matrix3D):Matrix3D{ var _local2:Matrix3D; _local2 = new (Matrix3D); _local2.calculateInverse(_arg1); return (_local2); } public static function euler2matrix(_arg1:Number3D):Matrix3D{ var _local2:Matrix3D; 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; temp.reset(); _local2 = temp; _local2 = temp; _local3 = (_arg1.x * toRADIANS); _local4 = (_arg1.y * toRADIANS); _local5 = (_arg1.z * toRADIANS); _local6 = Math.cos(_local3); _local7 = Math.sin(_local3); _local8 = Math.cos(_local4); _local9 = Math.sin(_local4); _local10 = Math.cos(_local5); _local11 = Math.sin(_local5); _local12 = (_local6 * _local9); _local13 = (_local7 * _local9); _local2.n11 = (_local8 * _local10); _local2.n12 = (-(_local8) * _local11); _local2.n13 = _local9; _local2.n21 = ((_local13 * _local10) + (_local6 * _local11)); _local2.n22 = ((-(_local13) * _local11) + (_local6 * _local10)); _local2.n23 = (-(_local7) * _local8); _local2.n31 = ((-(_local12) * _local10) + (_local7 * _local11)); _local2.n32 = ((_local12 * _local11) + (_local7 * _local10)); _local2.n33 = (_local6 * _local8); return (_local2); } public static function scaleMatrix(_arg1:Number, _arg2:Number, _arg3:Number):Matrix3D{ var _local4:Matrix3D; _local4 = IDENTITY; _local4.n11 = _arg1; _local4.n22 = _arg2; _local4.n33 = _arg3; return (_local4); } public static function rotateAxis(_arg1:Matrix3D, _arg2:Number3D):void{ var _local3:Number; var _local4:Number; var _local5:Number; _local3 = _arg2.x; _local4 = _arg2.y; _local5 = _arg2.z; _arg2.x = (((_local3 * _arg1.n11) + (_local4 * _arg1.n12)) + (_local5 * _arg1.n13)); _arg2.y = (((_local3 * _arg1.n21) + (_local4 * _arg1.n22)) + (_local5 * _arg1.n23)); _arg2.z = (((_local3 * _arg1.n31) + (_local4 * _arg1.n32)) + (_local5 * _arg1.n33)); _arg2.normalize(); } public static function matrix2euler(_arg1:Matrix3D, _arg2:Number3D=null):Number3D{ var _local3:Matrix3D; var _local4:Matrix3D; var _local5:Matrix3D; var _local6:Number; if (!_arg2){ _arg2 = Number3D.ZERO; }; n3Di.reset(_arg1.n11, _arg1.n21, _arg1.n31); n3Dj.reset(_arg1.n12, _arg1.n22, _arg1.n32); n3Dk.reset(_arg1.n13, _arg1.n23, _arg1.n33); n3Di.normalize(); n3Dj.normalize(); n3Dk.normalize(); temp.reset([n3Di.x, n3Dj.x, n3Dk.x, 0, n3Di.y, n3Dj.y, n3Dk.y, 0, n3Di.z, n3Dj.z, n3Dk.z, 0]); _local3 = temp; _arg2.x = Math.atan2(_local3.n23, _local3.n33); _local4 = Matrix3D.rotationX(-(_arg2.x)); _local5 = Matrix3D.multiply(_local4, _local3); _local6 = Math.sqrt(((_local5.n11 * _local5.n11) + (_local5.n21 * _local5.n21))); _arg2.y = Math.atan2(-(_local5.n31), _local6); _arg2.z = Math.atan2(-(_local5.n12), _local5.n11); if (_arg2.x == Math.PI){ if (_arg2.y > 0){ _arg2.y = (_arg2.y - Math.PI); } else { _arg2.y = (_arg2.y + Math.PI); }; _arg2.x = 0; _arg2.z = (_arg2.z + Math.PI); }; _arg2.x = (_arg2.x * toDEGREES); _arg2.y = (_arg2.y * toDEGREES); _arg2.z = (_arg2.z * toDEGREES); return (_arg2); } public static function multiplyQuaternion(_arg1:Object, _arg2:Object):Object{ 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:Object; _local3 = _arg1.x; _local4 = _arg1.y; _local5 = _arg1.z; _local6 = _arg1.w; _local7 = _arg2.x; _local8 = _arg2.y; _local9 = _arg2.z; _local10 = _arg2.w; _local11 = new Object(); _local11.x = ((((_local6 * _local7) + (_local3 * _local10)) + (_local4 * _local9)) - (_local5 * _local8)); _local11.y = ((((_local6 * _local8) + (_local4 * _local10)) + (_local5 * _local7)) - (_local3 * _local9)); _local11.z = ((((_local6 * _local9) + (_local5 * _local10)) + (_local3 * _local8)) - (_local4 * _local7)); _local11.w = ((((_local6 * _local10) - (_local3 * _local7)) - (_local4 * _local8)) - (_local5 * _local9)); return (_local11); } public static function get IDENTITY():Matrix3D{ return (new Matrix3D([1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1])); } } }//package org.papervision3d.core.math
Section 46
//Number2D (org.papervision3d.core.math.Number2D) package org.papervision3d.core.math { import org.papervision3d.*; public class Number2D { public var x:Number; public var y:Number; public static const DEGTORAD:Number = 0.0174532925199433; public static const RADTODEG:Number = 57.2957795130823; public function Number2D(_arg1:Number=0, _arg2:Number=0){ this.x = _arg1; this.y = _arg2; } public function divideEq(_arg1:Number):void{ x = (x / _arg1); y = (y / _arg1); } public function copyTo(_arg1:Number2D):void{ _arg1.x = this.x; _arg1.y = this.y; } public function get moduloSquared():Number{ return (((this.x * this.x) + (this.y * this.y))); } public function angle():Number{ if (Papervision3D.useDEGREES){ return ((RADTODEG * Math.atan2(y, x))); }; return (Math.atan2(y, x)); } public function reset(_arg1:Number=0, _arg2:Number=0):void{ this.x = _arg1; this.y = _arg2; } public function isModuloGreaterThan(_arg1:Number):Boolean{ return ((moduloSquared > (_arg1 * _arg1))); } public function clone():Number2D{ return (new Number2D(this.x, this.y)); } public function reverse():void{ this.x = -(this.x); this.y = -(this.y); } public function plusEq(_arg1:Number2D):void{ x = (x + _arg1.x); y = (y + _arg1.y); } public function rotate(_arg1:Number):void{ var _local2:Number; var _local3:Number; var _local4:Number2D; if (Papervision3D.useDEGREES){ _arg1 = (_arg1 * DEGTORAD); }; _local2 = Math.cos(_arg1); _local3 = Math.sin(_arg1); _local4 = clone(); this.x = ((_local4.x * _local2) - (_local4.y * _local3)); this.y = ((_local4.x * _local3) + (_local4.y * _local2)); } public function toString():String{ var _local1:Number; var _local2:Number; _local1 = (Math.round((this.x * 1000)) / 1000); _local2 = (Math.round((this.y * 1000)) / 1000); return ((((("[" + _local1) + ", ") + _local2) + "]")); } public function isModuloEqualTo(_arg1:Number):Boolean{ return ((moduloSquared == (_arg1 * _arg1))); } public function multiplyEq(_arg1:Number):void{ x = (x * _arg1); y = (y * _arg1); } public function normalise():void{ var _local1:Number; _local1 = this.modulo; this.x = (this.x / _local1); this.y = (this.y / _local1); } public function get modulo():Number{ return (Math.sqrt(((x * x) + (y * y)))); } public function isModuloLessThan(_arg1:Number):Boolean{ return ((moduloSquared < (_arg1 * _arg1))); } public function minusEq(_arg1:Number2D):void{ x = (x - _arg1.x); y = (y - _arg1.y); } public function copyFrom(_arg1:Number2D):void{ this.x = _arg1.x; this.y = _arg1.y; } public static function multiplyScalar(_arg1:Number2D, _arg2:Number):Number2D{ return (new Number2D((_arg1.x * _arg2), (_arg1.y * _arg2))); } public static function add(_arg1:Number2D, _arg2:Number2D):Number2D{ return (new Number2D((_arg1.x = (_arg1.x + _arg2.x)), (_arg1.y + _arg2.y))); } public static function dot(_arg1:Number2D, _arg2:Number2D):Number{ return (((_arg1.x * _arg2.x) + (_arg1.y * _arg2.y))); } public static function subtract(_arg1:Number2D, _arg2:Number2D):Number2D{ return (new Number2D((_arg1.x - _arg2.x), (_arg1.y - _arg2.y))); } } }//package org.papervision3d.core.math
Section 47
//Number3D (org.papervision3d.core.math.Number3D) package org.papervision3d.core.math { import org.papervision3d.*; public class Number3D { public var z:Number; public var x:Number; public var y:Number; public static var toDEGREES:Number = (180 / Math.PI); private static var temp:Number3D = Number3D.ZERO; public static var toRADIANS:Number = (Math.PI / 180); public function Number3D(_arg1:Number=0, _arg2:Number=0, _arg3:Number=0){ this.x = _arg1; this.y = _arg2; this.z = _arg3; } public function normalize():void{ var _local1:Number; _local1 = this.modulo; if (((!((_local1 == 0))) && (!((_local1 == 1))))){ this.x = (this.x / _local1); this.y = (this.y / _local1); this.z = (this.z / _local1); }; } public function copyTo(_arg1:Number3D):void{ _arg1.x = x; _arg1.y = y; _arg1.z = z; } public function get moduloSquared():Number{ return ((((this.x * this.x) + (this.y * this.y)) + (this.z * this.z))); } public function reset(_arg1:Number=0, _arg2:Number=0, _arg3:Number=0):void{ x = _arg1; y = _arg2; z = _arg3; } public function isModuloGreaterThan(_arg1:Number):Boolean{ return ((moduloSquared > (_arg1 * _arg1))); } public function rotateX(_arg1:Number):void{ var _local2:Number; var _local3:Number; if (Papervision3D.useDEGREES){ _arg1 = (_arg1 * toRADIANS); }; _local2 = Math.cos(_arg1); _local3 = Math.sin(_arg1); temp.copyFrom(this); this.y = ((temp.y * _local2) - (temp.z * _local3)); this.z = ((temp.y * _local3) + (temp.z * _local2)); } public function rotateY(_arg1:Number):void{ var _local2:Number; var _local3:Number; if (Papervision3D.useDEGREES){ _arg1 = (_arg1 * toRADIANS); }; _local2 = Math.cos(_arg1); _local3 = Math.sin(_arg1); temp.copyFrom(this); this.x = ((temp.x * _local2) + (temp.z * _local3)); this.z = ((temp.x * -(_local3)) + (temp.z * _local2)); } public function rotateZ(_arg1:Number):void{ var _local2:Number; var _local3:Number; if (Papervision3D.useDEGREES){ _arg1 = (_arg1 * toRADIANS); }; _local2 = Math.cos(_arg1); _local3 = Math.sin(_arg1); temp.copyFrom(this); this.x = ((temp.x * _local2) - (temp.y * _local3)); this.y = ((temp.x * _local3) + (temp.y * _local2)); } public function clone():Number3D{ return (new Number3D(this.x, this.y, this.z)); } public function plusEq(_arg1:Number3D):void{ x = (x + _arg1.x); y = (y + _arg1.y); z = (z + _arg1.z); } public function toString():String{ return (((((("x:" + (Math.round((x * 100)) / 100)) + " y:") + (Math.round((y * 100)) / 100)) + " z:") + (Math.round((z * 100)) / 100))); } public function isModuloEqualTo(_arg1:Number):Boolean{ return ((moduloSquared == (_arg1 * _arg1))); } public function multiplyEq(_arg1:Number):void{ x = (x * _arg1); y = (y * _arg1); z = (z * _arg1); } public function get modulo():Number{ return (Math.sqrt((((this.x * this.x) + (this.y * this.y)) + (this.z * this.z)))); } public function isModuloLessThan(_arg1:Number):Boolean{ return ((moduloSquared < (_arg1 * _arg1))); } public function minusEq(_arg1:Number3D):void{ x = (x - _arg1.x); y = (y - _arg1.y); z = (z - _arg1.z); } public function copyFrom(_arg1:Number3D):void{ x = _arg1.x; y = _arg1.y; z = _arg1.z; } public static function sub(_arg1:Number3D, _arg2:Number3D):Number3D{ return (new Number3D((_arg1.x - _arg2.x), (_arg1.y - _arg2.y), (_arg1.z - _arg2.z))); } public static function add(_arg1:Number3D, _arg2:Number3D):Number3D{ return (new Number3D((_arg1.x + _arg2.x), (_arg1.y + _arg2.y), (_arg1.z + _arg2.z))); } public static function cross(_arg1:Number3D, _arg2:Number3D, _arg3:Number3D=null):Number3D{ if (!_arg3){ _arg3 = ZERO; }; _arg3.reset(((_arg2.y * _arg1.z) - (_arg2.z * _arg1.y)), ((_arg2.z * _arg1.x) - (_arg2.x * _arg1.z)), ((_arg2.x * _arg1.y) - (_arg2.y * _arg1.x))); return (_arg3); } public static function dot(_arg1:Number3D, _arg2:Number3D):Number{ return ((((_arg1.x * _arg2.x) + (_arg1.y * _arg2.y)) + (_arg2.z * _arg1.z))); } public static function get ZERO():Number3D{ return (new Number3D(0, 0, 0)); } } }//package org.papervision3d.core.math
Section 48
//NumberUV (org.papervision3d.core.math.NumberUV) package org.papervision3d.core.math { public class NumberUV { public var u:Number; public var v:Number; public function NumberUV(_arg1:Number=0, _arg2:Number=0){ this.u = _arg1; this.v = _arg2; } public function toString():String{ return (((("u:" + u) + " v:") + v)); } public function clone():NumberUV{ return (new NumberUV(this.u, this.v)); } public static function get ZERO():NumberUV{ return (new NumberUV(0, 0)); } } }//package org.papervision3d.core.math
Section 49
//Plane3D (org.papervision3d.core.math.Plane3D) package org.papervision3d.core.math { import org.papervision3d.core.geom.renderables.*; import org.papervision3d.core.math.util.*; public class Plane3D { public var d:Number; public var normal:Number3D; var eps:Number;// = 0.01 private static var _yUP:Number3D = new Number3D(0, 1, 0); private static var _zUP:Number3D = new Number3D(0, 0, 1); protected static var flipPlane:Plane3D = new (Plane3D); ; public function Plane3D(_arg1:Number3D=null, _arg2:Number3D=null):void{ eps = 0.01; super(); if (((_arg1) && (_arg2))){ this.normal = _arg1; this.d = -(Number3D.dot(_arg1, _arg2)); } else { this.normal = new Number3D(); this.d = 0; }; } public function setNormalAndPoint(_arg1:Number3D, _arg2:Number3D):void{ this.normal = _arg1; this.d = -(Number3D.dot(_arg1, _arg2)); } public function pointOnSide(_arg1:Number3D):int{ var _local2:Number; _local2 = distance(_arg1); if (_local2 < 0){ return (ClassificationUtil.BACK); }; if (_local2 > 0){ return (ClassificationUtil.FRONT); }; return (ClassificationUtil.COINCIDING); } public function vertDistance(_arg1:Vertex3D):Number{ return (((((_arg1.x * normal.x) + (normal.y * _arg1.y)) + (_arg1.z * normal.z)) + d)); } public function getIntersectionLine(_arg1:Vertex3D, _arg2:Vertex3D):Vertex3D{ var _local3:Number; var _local4:Number; var _local5:Number; _local3 = ((((normal.x * _arg1.x) + (normal.y * _arg1.y)) + (normal.z * _arg1.z)) - d); _local4 = ((((normal.x * _arg2.x) + (normal.y * _arg2.y)) + (normal.z * _arg2.z)) - d); _local5 = (((((normal.x * _arg2.x) + (normal.y * _arg2.y)) + (normal.z * _arg2.z)) - d) / (_local4 - _local3)); return (new Vertex3D((_arg2.x + ((_arg1.x - _arg2.x) * _local5)), (_arg2.y + ((_arg1.y - _arg2.y) * _local5)), (_arg2.z + ((_arg1.z - _arg2.z) * _local5)))); } public function normalize():void{ var _local1:Number3D; var _local2:Number; _local1 = this.normal; _local2 = Math.sqrt((((_local1.x * _local1.x) + (_local1.y * _local1.y)) + (_local1.z * _local1.z))); _local1.x = (_local1.x / _local2); _local1.y = (_local1.y / _local2); _local1.z = (_local1.z / _local2); this.d = (this.d / _local2); } public function closestPointOnPlane(_arg1:Number3D, _arg2:Number3D):Number3D{ var _local3:Number; var _local4:Number3D; _local3 = Number3D.dot(this.normal, Number3D.sub(_arg1, _arg2)); _local4 = _arg1.clone(); _arg1.clone().x = (_local4.x - (_local3 * this.normal.x)); _local4.y = (_local4.y - (_local3 * this.normal.y)); _local4.z = (_local4.z - (_local3 * this.normal.z)); return (_local4); } public function isCoplanarOpposite(_arg1:Plane3D):Boolean{ flipPlane.normal.z = -(_arg1.normal.z); flipPlane.normal.y = -(_arg1.normal.y); flipPlane.normal.x = -(_arg1.normal.x); flipPlane.d = _arg1.d; return (flipPlane.isCoplanar(_arg1)); } public function projectPoints(_arg1:Array, _arg2:Number3D=null):void{ var _local3:Number; var _local4:Number3D; var _local5:Number3D; var _local6:Matrix3D; var _local7:Number3D; var _local8:*; _local3 = Number3D.dot(_yUP, this.normal); _local4 = ((Math.abs(_local3) > 0.99)) ? _zUP : _yUP; _local5 = Number3D.cross(_local4, normal); _local5.normalize(); _local4 = Number3D.cross(normal, _local5); _local4.normalize(); _local6 = new Matrix3D([_local5.x, _local4.x, normal.x, 0, _local5.y, _local4.y, normal.y, 0, _local5.z, _local4.z, normal.z, 0, 0, 0, 0, 1]); if (_arg2){ _local6 = Matrix3D.multiply(Matrix3D.translationMatrix(_arg2.x, _arg2.y, _arg2.z), _local6); }; _local7 = new Number3D(); for each (_local8 in _arg1) { _local7.x = _local8["x"]; _local7.y = _local8["y"]; _local7.z = _local8["z"]; Matrix3D.multiplyVector(_local6, _local7); _local8["x"] = _local7.x; _local8["y"] = _local7.y; _local8["z"] = _local7.z; }; } public function getTempFlip():Plane3D{ flipPlane.normal.z = -(normal.z); flipPlane.normal.y = -(normal.y); flipPlane.normal.x = -(normal.x); flipPlane.d = d; return (flipPlane); } public function setThreePoints(_arg1:Number3D, _arg2:Number3D, _arg3:Number3D):void{ var _local4:Number3D; var _local5:Number3D; _local4 = Number3D.sub(_arg2, _arg1); _local5 = Number3D.sub(_arg3, _arg1); this.normal = Number3D.cross(_local4, _local5); this.normal.normalize(); this.d = -(Number3D.dot(normal, _arg1)); } public function setCoefficients(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):void{ this.normal.x = _arg1; this.normal.y = _arg2; this.normal.z = _arg3; this.d = _arg4; normalize(); } public function getFlip():Plane3D{ var _local1:Plane3D; _local1 = Plane3D.fromThreePoints(new Number3D(), new Number3D(), new Number3D()); _local1.normal.z = -(normal.z); _local1.normal.y = -(normal.y); _local1.normal.x = -(normal.x); _local1.d = d; return (_local1); } public function toString():String{ return ((((((((("[a:" + normal.x) + " b:") + normal.y) + " c:") + normal.z) + " d:") + d) + "]")); } public function isCoplanar(_arg1:Plane3D):Boolean{ return ((((((((Math.abs((normal.x - _arg1.normal.x)) < eps)) && ((Math.abs((normal.y - _arg1.normal.y)) < eps)))) && ((Math.abs((normal.z - _arg1.normal.z)) < eps)))) && ((Math.abs((d - _arg1.d)) < eps)))); } public function distance(_arg1):Number{ var _local2:Number3D; _local2 = ((_arg1 is Vertex3D)) ? _arg1.toNumber3D() : _arg1; return ((Number3D.dot(_local2, normal) + d)); } public function getIntersectionLineNumbers(_arg1:Number3D, _arg2:Number3D):Number3D{ var _local3:Number; var _local4:Number; var _local5:Number; _local3 = ((((normal.x * _arg1.x) + (normal.y * _arg1.y)) + (normal.z * _arg1.z)) - d); _local4 = ((((normal.x * _arg2.x) + (normal.y * _arg2.y)) + (normal.z * _arg2.z)) - d); _local5 = (((((normal.x * _arg2.x) + (normal.y * _arg2.y)) + (normal.z * _arg2.z)) - d) / (_local4 - _local3)); return (new Number3D((_arg2.x + ((_arg1.x - _arg2.x) * _local5)), (_arg2.y + ((_arg1.y - _arg2.y) * _local5)), (_arg2.z + ((_arg1.z - _arg2.z) * _local5)))); } public static function fromNormalAndPoint(_arg1, _arg2):Plane3D{ var _local3:Number3D; var _local4:Number3D; _local3 = ((_arg1 is Number3D)) ? _arg1 : new Number3D(_arg1.x, _arg1.y, _arg1.z); _local4 = ((_arg2 is Number3D)) ? _arg2 : new Number3D(_arg2.x, _arg2.y, _arg2.z); return (new Plane3D(_local3, _local4)); } public static function fromThreePoints(_arg1, _arg2, _arg3):Plane3D{ var _local4:Plane3D; var _local5:Number3D; var _local6:Number3D; var _local7:Number3D; _local4 = new (Plane3D); _local5 = ((_arg1 is Number3D)) ? _arg1 : new Number3D(_arg1.x, _arg1.y, _arg1.z); _local6 = ((_arg2 is Number3D)) ? _arg2 : new Number3D(_arg2.x, _arg2.y, _arg2.z); _local7 = ((_arg3 is Number3D)) ? _arg3 : new Number3D(_arg3.x, _arg3.y, _arg3.z); _local4.setThreePoints(_local5, _local6, _local7); return (_local4); } public static function fromCoefficients(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):Plane3D{ var _local5:Plane3D; _local5 = new (Plane3D); _local5.setCoefficients(_arg1, _arg2, _arg3, _arg4); return (_local5); } } }//package org.papervision3d.core.math
Section 50
//Quaternion (org.papervision3d.core.math.Quaternion) package org.papervision3d.core.math { public class Quaternion { private var _matrix:Matrix3D; public var w:Number; public var x:Number; public var y:Number; public var z:Number; public static const EPSILON:Number = 1E-6; public static const DEGTORAD:Number = 0.0174532925199433; public static const RADTODEG:Number = 57.2957795130823; public function Quaternion(_arg1:Number=0, _arg2:Number=0, _arg3:Number=0, _arg4:Number=1):void{ this.x = _arg1; this.y = _arg2; this.z = _arg3; this.w = _arg4; _matrix = Matrix3D.IDENTITY; } public function toString():String{ return (((((((("Quaternion: x:" + this.x) + " y:") + this.y) + " z:") + this.z) + " w:") + this.w)); } public function normalize():void{ var _local1:Number; var _local2:Number; _local1 = this.modulo; if (Math.abs(_local1) < EPSILON){ x = (y = (z = 0)); w = 1; } else { _local2 = (1 / _local1); x = (x * _local2); y = (y * _local2); z = (z * _local2); w = (w * _local2); }; } public function get modulo():Number{ return (Math.sqrt(((((x * x) + (y * y)) + (z * z)) + (w * w)))); } public function toMatrix():Matrix3D{ 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; _local1 = (x * x); _local2 = (x * y); _local3 = (x * z); _local4 = (x * w); _local5 = (y * y); _local6 = (y * z); _local7 = (y * w); _local8 = (z * z); _local9 = (z * w); _matrix.n11 = (1 - (2 * (_local5 + _local8))); _matrix.n12 = (2 * (_local2 - _local9)); _matrix.n13 = (2 * (_local3 + _local7)); _matrix.n21 = (2 * (_local2 + _local9)); _matrix.n22 = (1 - (2 * (_local1 + _local8))); _matrix.n23 = (2 * (_local6 - _local4)); _matrix.n31 = (2 * (_local3 - _local7)); _matrix.n32 = (2 * (_local6 + _local4)); _matrix.n33 = (1 - (2 * (_local1 + _local5))); return (_matrix); } public function mult(_arg1:Quaternion):void{ var _local2:Number; var _local3:Number; var _local4:Number; var _local5:Number; _local2 = this.w; _local3 = this.x; _local4 = this.y; _local5 = this.z; x = ((((_local2 * _arg1.x) + (_local3 * _arg1.w)) + (_local4 * _arg1.z)) - (_local5 * _arg1.y)); y = ((((_local2 * _arg1.y) - (_local3 * _arg1.z)) + (_local4 * _arg1.w)) + (_local5 * _arg1.x)); z = ((((_local2 * _arg1.z) + (_local3 * _arg1.y)) - (_local4 * _arg1.x)) + (_local5 * _arg1.w)); w = ((((_local2 * _arg1.w) - (_local3 * _arg1.x)) - (_local4 * _arg1.y)) - (_local5 * _arg1.z)); } public static function sub(_arg1:Quaternion, _arg2:Quaternion):Quaternion{ return (new Quaternion((_arg1.x - _arg2.x), (_arg1.y - _arg2.y), (_arg1.z - _arg2.z), (_arg1.w - _arg2.w))); } public static function add(_arg1:Quaternion, _arg2:Quaternion):Quaternion{ return (new Quaternion((_arg1.x + _arg2.x), (_arg1.y + _arg2.y), (_arg1.z + _arg2.z), (_arg1.w + _arg2.w))); } public static function createFromEuler(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Boolean=false):Quaternion{ 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:Quaternion; if (_arg4){ _arg1 = (_arg1 * DEGTORAD); _arg2 = (_arg2 * DEGTORAD); _arg3 = (_arg3 * DEGTORAD); }; _local5 = Math.sin((_arg1 * 0.5)); _local6 = Math.cos((_arg1 * 0.5)); _local7 = Math.sin((_arg2 * 0.5)); _local8 = Math.cos((_arg2 * 0.5)); _local9 = Math.sin((_arg3 * 0.5)); _local10 = Math.cos((_arg3 * 0.5)); _local11 = (_local6 * _local8); _local12 = (_local5 * _local7); _local13 = new (Quaternion); _local13.x = ((_local9 * _local11) - (_local10 * _local12)); _local13.y = (((_local10 * _local5) * _local8) + ((_local9 * _local6) * _local7)); _local13.z = (((_local10 * _local6) * _local7) - ((_local9 * _local5) * _local8)); _local13.w = ((_local10 * _local11) + (_local9 * _local12)); return (_local13); } public static function createFromMatrix(_arg1:Matrix3D):Quaternion{ var _local2:Quaternion; var _local3:Number; var _local4:Array; var _local5:int; var _local6:int; var _local7:int; var _local8:Number; var _local9:Array; var _local10:Array; _local2 = new (Quaternion); _local4 = new Array(4); _local8 = ((_arg1.n11 + _arg1.n22) + _arg1.n33); if (_local8 > 0){ _local3 = Math.sqrt((_local8 + 1)); _local2.w = (_local3 / 2); _local3 = (0.5 / _local3); _local2.x = ((_arg1.n32 - _arg1.n23) * _local3); _local2.y = ((_arg1.n13 - _arg1.n31) * _local3); _local2.z = ((_arg1.n21 - _arg1.n12) * _local3); } else { _local9 = [1, 2, 0]; _local10 = [[_arg1.n11, _arg1.n12, _arg1.n13, _arg1.n14], [_arg1.n21, _arg1.n22, _arg1.n23, _arg1.n24], [_arg1.n31, _arg1.n32, _arg1.n33, _arg1.n34]]; _local5 = 0; if (_local10[1][1] > _local10[0][0]){ _local5 = 1; }; if (_local10[2][2] > _local10[_local5][_local5]){ _local5 = 2; }; _local6 = _local9[_local5]; _local7 = _local9[_local6]; _local3 = Math.sqrt(((_local10[_local5][_local5] - (_local10[_local6][_local6] + _local10[_local7][_local7])) + 1)); _local4[_local5] = (_local3 * 0.5); if (_local3 != 0){ _local3 = (0.5 / _local3); }; _local4[3] = ((_local10[_local7][_local6] - _local10[_local6][_local7]) * _local3); _local4[_local6] = ((_local10[_local6][_local5] + _local10[_local5][_local6]) * _local3); _local4[_local7] = ((_local10[_local7][_local5] + _local10[_local5][_local7]) * _local3); _local2.x = _local4[0]; _local2.y = _local4[1]; _local2.z = _local4[2]; _local2.w = _local4[3]; }; return (_local2); } public static function dot(_arg1:Quaternion, _arg2:Quaternion):Number{ return (((((_arg1.x * _arg2.x) + (_arg1.y * _arg2.y)) + (_arg1.z * _arg2.z)) + (_arg1.w * _arg2.w))); } public static function multiply(_arg1:Quaternion, _arg2:Quaternion):Quaternion{ var _local3:Quaternion; _local3 = new (Quaternion); _local3.x = ((((_arg1.w * _arg2.x) + (_arg1.x * _arg2.w)) + (_arg1.y * _arg2.z)) - (_arg1.z * _arg2.y)); _local3.y = ((((_arg1.w * _arg2.y) - (_arg1.x * _arg2.z)) + (_arg1.y * _arg2.w)) + (_arg1.z * _arg2.x)); _local3.z = ((((_arg1.w * _arg2.z) + (_arg1.x * _arg2.y)) - (_arg1.y * _arg2.x)) + (_arg1.z * _arg2.w)); _local3.w = ((((_arg1.w * _arg2.w) - (_arg1.x * _arg2.x)) - (_arg1.y * _arg2.y)) - (_arg1.z * _arg2.z)); return (_local3); } public static function createFromAxisAngle(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):Quaternion{ var _local5:Number; var _local6:Number; var _local7:Quaternion; _local5 = Math.sin((_arg4 / 2)); _local6 = Math.cos((_arg4 / 2)); _local7 = new (Quaternion); _local7.x = (_arg1 * _local5); _local7.y = (_arg2 * _local5); _local7.z = (_arg3 * _local5); _local7.w = _local6; _local7.normalize(); return (_local7); } public static function slerp(_arg1:Quaternion, _arg2:Quaternion, _arg3:Number):Quaternion{ var _local4:Number; var _local5:Number; var _local6:Number; var _local7:Number; var _local8:Number; _local4 = ((((_arg1.w * _arg2.w) + (_arg1.x * _arg2.x)) + (_arg1.y * _arg2.y)) + (_arg1.z * _arg2.z)); if (_local4 < 0){ _arg1.x = (_arg1.x * -1); _arg1.y = (_arg1.y * -1); _arg1.z = (_arg1.z * -1); _arg1.w = (_arg1.w * -1); _local4 = (_local4 * -1); }; if ((_local4 + 1) > EPSILON){ if ((1 - _local4) >= EPSILON){ _local7 = Math.acos(_local4); _local8 = (1 / Math.sin(_local7)); _local5 = (Math.sin((_local7 * (1 - _arg3))) * _local8); _local6 = (Math.sin((_local7 * _arg3)) * _local8); } else { _local5 = (1 - _arg3); _local6 = _arg3; }; } else { _arg2.y = -(_arg1.y); _arg2.x = _arg1.x; _arg2.w = -(_arg1.w); _arg2.z = _arg1.z; _local5 = Math.sin((Math.PI * (0.5 - _arg3))); _local6 = Math.sin((Math.PI * _arg3)); }; return (new Quaternion(((_local5 * _arg1.x) + (_local6 * _arg2.x)), ((_local5 * _arg1.y) + (_local6 * _arg2.y)), ((_local5 * _arg1.z) + (_local6 * _arg2.z)), ((_local5 * _arg1.w) + (_local6 * _arg2.w)))); } public static function createFromOrthoMatrix(_arg1:Matrix3D):Quaternion{ var _local2:Quaternion; _local2 = new (Quaternion); _local2.w = (Math.sqrt(Math.max(0, (((1 + _arg1.n11) + _arg1.n22) + _arg1.n33))) / 2); _local2.x = (Math.sqrt(Math.max(0, (((1 + _arg1.n11) - _arg1.n22) - _arg1.n33))) / 2); _local2.y = (Math.sqrt(Math.max(0, (((1 - _arg1.n11) + _arg1.n22) - _arg1.n33))) / 2); _local2.z = (Math.sqrt(Math.max(0, (((1 - _arg1.n11) - _arg1.n22) + _arg1.n33))) / 2); _local2.x = (((_arg1.n32 - _arg1.n23) < 0)) ? ((_local2.x < 0)) ? _local2.x : -(_local2.x) : ((_local2.x < 0)) ? -(_local2.x) : _local2.x; _local2.y = (((_arg1.n13 - _arg1.n31) < 0)) ? ((_local2.y < 0)) ? _local2.y : -(_local2.y) : ((_local2.y < 0)) ? -(_local2.y) : _local2.y; _local2.z = (((_arg1.n21 - _arg1.n12) < 0)) ? ((_local2.z < 0)) ? _local2.z : -(_local2.z) : ((_local2.z < 0)) ? -(_local2.z) : _local2.z; return (_local2); } public static function conjugate(_arg1:Quaternion):Quaternion{ var _local2:Quaternion; _local2 = new (Quaternion); _local2.x = -(_arg1.x); _local2.y = -(_arg1.y); _local2.z = -(_arg1.z); _local2.w = _arg1.w; return (_local2); } public static function slerpOld(_arg1:Quaternion, _arg2:Quaternion, _arg3:Number):Quaternion{ var _local4:Quaternion; var _local5:Number; var _local6:Number; var _local7:Number; var _local8:Number; var _local9:Number; _local4 = new (Quaternion); _local5 = ((((_arg1.w * _arg2.w) + (_arg1.x * _arg2.x)) + (_arg1.y * _arg2.y)) + (_arg1.z * _arg2.z)); if (Math.abs(_local5) >= 1){ _local4.w = _arg1.w; _local4.x = _arg1.x; _local4.y = _arg1.y; _local4.z = _arg1.z; return (_local4); }; _local6 = Math.acos(_local5); _local7 = Math.sqrt((1 - (_local5 * _local5))); if (Math.abs(_local7) < 0.001){ _local4.w = ((_arg1.w * 0.5) + (_arg2.w * 0.5)); _local4.x = ((_arg1.x * 0.5) + (_arg2.x * 0.5)); _local4.y = ((_arg1.y * 0.5) + (_arg2.y * 0.5)); _local4.z = ((_arg1.z * 0.5) + (_arg2.z * 0.5)); return (_local4); }; _local8 = (Math.sin(((1 - _arg3) * _local6)) / _local7); _local9 = (Math.sin((_arg3 * _local6)) / _local7); _local4.w = ((_arg1.w * _local8) + (_arg2.w * _local9)); _local4.x = ((_arg1.x * _local8) + (_arg2.x * _local9)); _local4.y = ((_arg1.y * _local8) + (_arg2.y * _local9)); _local4.z = ((_arg1.z * _local8) + (_arg2.z * _local9)); return (_local4); } } }//package org.papervision3d.core.math
Section 51
//pv3dview (org.papervision3d.core.ns.pv3dview) package org.papervision3d.core.ns { public namespace pv3dview; }//package org.papervision3d.core.ns
Section 52
//CameraObject3D (org.papervision3d.core.proto.CameraObject3D) package org.papervision3d.core.proto { import org.papervision3d.core.math.*; import flash.geom.*; import org.papervision3d.objects.*; import org.papervision3d.*; public class CameraObject3D extends DisplayObject3D { public var eye:Matrix3D; public var viewport:Rectangle; public var zoom:Number; public var sort:Boolean; public var yUP:Boolean; public var focus:Number; public static const TYPE:String = "ABSTRACT"; public static var DEFAULT_POS:Number3D = new Number3D(0, 0, -1000); public static var DEFAULT_UP:Number3D = new Number3D(0, 1, 0); private static var _flipY:Matrix3D = Matrix3D.scaleMatrix(1, -1, 1); public function CameraObject3D(_arg1:Number=3, _arg2:Number=500){ this.x = DEFAULT_POS.x; this.y = DEFAULT_POS.y; this.z = DEFAULT_POS.z; this.zoom = _arg1; this.focus = _arg2; this.eye = Matrix3D.IDENTITY; this.sort = true; if (Papervision3D.useRIGHTHANDED){ DEFAULT_UP.y = -1; this.yUP = false; this.lookAt(DisplayObject3D.ZERO); } else { this.yUP = true; }; } override public function lookAt(_arg1:DisplayObject3D, _arg2:Number3D=null):void{ if (this.yUP){ super.lookAt(_arg1, _arg2); } else { super.lookAt(_arg1, ((_arg2) || (DEFAULT_UP))); }; } public function unproject(_arg1:Number, _arg2:Number):Number3D{ var _local3:Number; var _local4:Number3D; _local3 = ((focus * zoom) / focus); _local4 = new Number3D((_arg1 / _local3), (-(_arg2) / _local3), focus); Matrix3D.multiplyVector3x3(transform, _local4); return (_local4); } public function transformView(_arg1:Matrix3D=null):void{ if (this._transformDirty){ updateTransform(); }; if (this.yUP){ eye.calculateMultiply(((_arg1) || (this.transform)), _flipY); eye.invert(); } else { eye.calculateInverse(((_arg1) || (this.transform))); }; } public function pan(_arg1:Number):void{ super.yaw(_arg1); } public function tilt(_arg1:Number):void{ super.pitch(_arg1); } } }//package org.papervision3d.core.proto
Section 53
//DisplayObjectContainer3D (org.papervision3d.core.proto.DisplayObjectContainer3D) package org.papervision3d.core.proto { import flash.events.*; import org.papervision3d.objects.*; import flash.utils.*; public class DisplayObjectContainer3D extends EventDispatcher { private var _childrenTotal:int; public var root:DisplayObjectContainer3D; protected var _children:Dictionary; protected var _childrenByName:Object; public function DisplayObjectContainer3D():void{ this._children = new Dictionary(false); this._childrenByName = new Dictionary(true); this._childrenTotal = 0; } public function addChild(_arg1:DisplayObject3D, _arg2:String=null):DisplayObject3D{ _arg2 = ((((_arg2) || (_arg1.name))) || (String(_arg1.id))); this._children[_arg1] = _arg2; this._childrenByName[_arg2] = _arg1; this._childrenTotal++; _arg1.parent = this; _arg1.root = this.root; return (_arg1); } private function findChildByName(_arg1:String, _arg2:DisplayObject3D=null):DisplayObject3D{ var _local3:DisplayObject3D; var _local4:DisplayObject3D; _arg2 = ((_arg2) || (DisplayObject3D(this))); if (!_arg2){ return (null); }; if (_arg2.name == _arg1){ return (_arg2); }; for each (_local3 in _arg2.children) { _local4 = findChildByName(_arg1, _local3); if (_local4){ return (_local4); }; }; return (null); } public function getChildByName(_arg1:String, _arg2:Boolean=false):DisplayObject3D{ if (_arg2){ return (findChildByName(_arg1)); }; return (this._childrenByName[_arg1]); } public function get numChildren():int{ return (this._childrenTotal); } public function addChildren(_arg1:DisplayObject3D):DisplayObjectContainer3D{ var _local2:DisplayObject3D; for each (_local2 in _arg1.children) { _arg1.removeChild(_local2); this.addChild(_local2); }; return (this); } public function removeChildByName(_arg1:String):DisplayObject3D{ return (removeChild(getChildByName(_arg1))); } override public function toString():String{ return (childrenList()); } public function removeChild(_arg1:DisplayObject3D):DisplayObject3D{ if (_arg1){ delete this._childrenByName[this._children[_arg1]]; delete this._children[_arg1]; _arg1.parent = null; _arg1.root = null; _childrenTotal--; return (_arg1); }; return (null); } public function childrenList():String{ var _local1:String; var _local2:String; _local1 = ""; for (_local2 in this._children) { _local1 = (_local1 + (_local2 + "\n")); }; return (_local1); } public function get children():Object{ return (this._childrenByName); } } }//package org.papervision3d.core.proto
Section 54
//GeometryObject3D (org.papervision3d.core.proto.GeometryObject3D) package org.papervision3d.core.proto { import org.papervision3d.core.math.*; import org.papervision3d.core.geom.renderables.*; import flash.events.*; import org.papervision3d.objects.*; import flash.utils.*; public class GeometryObject3D extends EventDispatcher { protected var _boundingSphereDirty:Boolean;// = true public var dirty:Boolean; protected var _aabbDirty:Boolean;// = true public var _ready:Boolean;// = false protected var _boundingSphere:BoundingSphere; public var faces:Array; private var _numInstances:uint;// = 0 public var vertices:Array; protected var _aabb:AxisAlignedBoundingBox; public function GeometryObject3D():void{ _boundingSphereDirty = true; _aabbDirty = true; _numInstances = 0; _ready = false; super(); dirty = true; } public function transformVertices(_arg1:Matrix3D):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:int; var _local15:Vertex3D; var _local16:Number; var _local17:Number; var _local18:Number; var _local19:Number; var _local20:Number; var _local21:Number; _local2 = _arg1.n11; _local3 = _arg1.n12; _local4 = _arg1.n13; _local5 = _arg1.n21; _local6 = _arg1.n22; _local7 = _arg1.n23; _local8 = _arg1.n31; _local9 = _arg1.n32; _local10 = _arg1.n33; _local11 = _arg1.n14; _local12 = _arg1.n24; _local13 = _arg1.n34; _local14 = vertices.length; while ((_local15 = vertices[--_local14])) { _local16 = _local15.x; _local17 = _local15.y; _local18 = _local15.z; _local19 = ((((_local16 * _local2) + (_local17 * _local3)) + (_local18 * _local4)) + _local11); _local20 = ((((_local16 * _local5) + (_local17 * _local6)) + (_local18 * _local7)) + _local12); _local21 = ((((_local16 * _local8) + (_local17 * _local9)) + (_local18 * _local10)) + _local13); _local15.x = _local19; _local15.y = _local20; _local15.z = _local21; }; } public function flipFaces():void{ var _local1:Triangle3D; var _local2:Vertex3D; for each (_local1 in this.faces) { _local2 = _local1.v0; _local1.v0 = _local1.v2; _local1.v2 = _local2; _local1.uv = [_local1.uv2, _local1.uv1, _local1.uv0]; _local1.createNormal(); }; this.ready = true; } private function createVertexNormals():void{ var _local1:Dictionary; var _local2:Triangle3D; var _local3:Vertex3D; _local1 = new Dictionary(true); for each (_local2 in faces) { _local2.v0.connectedFaces[_local2] = _local2; _local2.v1.connectedFaces[_local2] = _local2; _local2.v2.connectedFaces[_local2] = _local2; _local1[_local2.v0] = _local2.v0; _local1[_local2.v1] = _local2.v1; _local1[_local2.v2] = _local2.v2; }; for each (_local3 in _local1) { _local3.calculateNormal(); }; } public function get boundingSphere():BoundingSphere{ if (_boundingSphereDirty){ _boundingSphere = BoundingSphere.getFromVertices(vertices); _boundingSphereDirty = false; }; return (_boundingSphere); } public function transformUV(_arg1:MaterialObject3D):void{ var _local2:String; if (_arg1.bitmap){ for (_local2 in this.faces) { faces[_local2].transformUV(_arg1); }; }; } public function clone(_arg1:DisplayObject3D=null):GeometryObject3D{ var _local2:Dictionary; var _local3:Dictionary; var _local4:GeometryObject3D; var _local5:int; var _local6:MaterialObject3D; var _local7:Vertex3D; var _local8:Triangle3D; var _local9:Vertex3D; var _local10:Vertex3D; var _local11:Vertex3D; _local2 = new Dictionary(true); _local3 = new Dictionary(true); _local4 = new GeometryObject3D(); _local4.vertices = new Array(); _local4.faces = new Array(); _local5 = 0; while (_local5 < this.vertices.length) { _local7 = this.vertices[_local5]; _local3[_local7] = _local7.clone(); _local4.vertices.push(_local3[_local7]); _local5++; }; _local5 = 0; while (_local5 < this.faces.length) { _local8 = this.faces[_local5]; _local9 = _local3[_local8.v0]; _local10 = _local3[_local8.v1]; _local11 = _local3[_local8.v2]; _local4.faces.push(new Triangle3D(_arg1, [_local9, _local10, _local11], _local8.material, _local8.uv)); _local2[_local8.material] = _local8.material; _local5++; }; for each (_local6 in _local2) { _local6.registerObject(_arg1); }; return (_local4); } public function set ready(_arg1:Boolean):void{ if (_arg1){ createVertexNormals(); this.dirty = false; }; _ready = _arg1; } public function get ready():Boolean{ return (_ready); } public function get aabb():AxisAlignedBoundingBox{ if (_aabbDirty){ _aabb = AxisAlignedBoundingBox.createFromVertices(vertices); _aabbDirty = false; }; return (_aabb); } } }//package org.papervision3d.core.proto
Section 55
//MaterialObject3D (org.papervision3d.core.proto.MaterialObject3D) package org.papervision3d.core.proto { import org.papervision3d.core.geom.renderables.*; import flash.display.*; import flash.events.*; import org.papervision3d.core.render.data.*; import flash.geom.*; import org.papervision3d.objects.*; import org.papervision3d.core.render.material.*; import flash.utils.*; import org.papervision3d.core.render.draw.*; import org.papervision3d.materials.*; public class MaterialObject3D extends EventDispatcher implements ITriangleDrawer { public var widthOffset:Number;// = 0 public var name:String; public var heightOffset:Number;// = 0 public var fillAlpha:Number;// = 0 public var fillColor:Number; public var id:Number; protected var objects:Dictionary; public var invisible:Boolean;// = false public var smooth:Boolean;// = false public var bitmap:BitmapData; public var lineColor:Number; public var lineAlpha:Number;// = 0 public var oneSide:Boolean;// = true public var lineThickness:Number;// = 1 public var interactive:Boolean;// = false public var opposite:Boolean;// = false public var maxU:Number; public var tiled:Boolean;// = false public var maxV:Number; public static var DEFAULT_COLOR:int = 0; public static var DEBUG_COLOR:int = 0xFF00FF; private static var _totalMaterialObjects:Number = 0; public function MaterialObject3D(){ smooth = false; tiled = false; lineColor = DEFAULT_COLOR; lineAlpha = 0; lineThickness = 1; fillColor = DEFAULT_COLOR; fillAlpha = 0; oneSide = true; invisible = false; opposite = false; widthOffset = 0; heightOffset = 0; interactive = false; super(); this.id = _totalMaterialObjects++; MaterialManager.registerMaterial(this); objects = new Dictionary(true); } public function drawTriangle(_arg1:Triangle3D, _arg2:Graphics, _arg3:RenderSessionData, _arg4:BitmapData=null, _arg5:Matrix=null):void{ } public function get doubleSided():Boolean{ return (!(this.oneSide)); } public function unregisterObject(_arg1:DisplayObject3D):void{ if (((objects) && (!((objects[_arg1] == null))))){ delete objects[_arg1]; }; } public function set doubleSided(_arg1:Boolean):void{ this.oneSide = !(_arg1); } public function registerObject(_arg1:DisplayObject3D):void{ objects[_arg1] = _arg1; } public function updateBitmap():void{ } override public function toString():String{ return (((((("[MaterialObject3D] bitmap:" + this.bitmap) + " lineColor:") + this.lineColor) + " fillColor:") + fillColor)); } public function copy(_arg1:MaterialObject3D):void{ this.bitmap = _arg1.bitmap; this.smooth = _arg1.smooth; this.lineColor = _arg1.lineColor; this.lineAlpha = _arg1.lineAlpha; this.fillColor = _arg1.fillColor; this.fillAlpha = _arg1.fillAlpha; this.oneSide = _arg1.oneSide; this.opposite = _arg1.opposite; this.invisible = _arg1.invisible; this.name = _arg1.name; this.maxU = _arg1.maxU; this.maxV = _arg1.maxV; } public function destroy():void{ objects = null; bitmap = null; MaterialManager.unRegisterMaterial(this); } public function clone():MaterialObject3D{ var _local1:MaterialObject3D; _local1 = new MaterialObject3D(); _local1.copy(this); return (_local1); } public static function get DEFAULT():MaterialObject3D{ var _local1:MaterialObject3D; _local1 = new WireframeMaterial(); _local1.lineColor = (0xFFFFFF * Math.random()); _local1.lineAlpha = 1; _local1.fillColor = DEFAULT_COLOR; _local1.fillAlpha = 1; _local1.doubleSided = false; return (_local1); } public static function get DEBUG():MaterialObject3D{ var _local1:MaterialObject3D; _local1 = new (MaterialObject3D); _local1.lineColor = (0xFFFFFF * Math.random()); _local1.lineAlpha = 1; _local1.fillColor = DEBUG_COLOR; _local1.fillAlpha = 0.37; _local1.doubleSided = true; return (_local1); } } }//package org.papervision3d.core.proto
Section 56
//SceneObject3D (org.papervision3d.core.proto.SceneObject3D) package org.papervision3d.core.proto { import org.papervision3d.materials.utils.*; import org.papervision3d.objects.*; import org.papervision3d.*; public class SceneObject3D extends DisplayObjectContainer3D { public var objects:Array; public var materials:MaterialsList; public function SceneObject3D(){ this.objects = new Array(); this.materials = new MaterialsList(); Papervision3D.log((((((Papervision3D.NAME + " ") + Papervision3D.VERSION) + " (") + Papervision3D.DATE) + ")\n")); this.root = this; } override public function removeChild(_arg1:DisplayObject3D):DisplayObject3D{ var _local2:int; super.removeChild(_arg1); _local2 = 0; while (_local2 < this.objects.length) { if (this.objects[_local2] === _arg1){ this.objects.splice(_local2, 1); return (_arg1); }; _local2++; }; return (_arg1); } override public function addChild(_arg1:DisplayObject3D, _arg2:String=null):DisplayObject3D{ var _local3:DisplayObject3D; _local3 = super.addChild(_arg1, (_arg2) ? _arg2 : _arg1.name); _arg1.scene = this; this.objects.push(_local3); return (_local3); } } }//package org.papervision3d.core.proto
Section 57
//AbstractRenderListItem (org.papervision3d.core.render.command.AbstractRenderListItem) package org.papervision3d.core.render.command { import flash.display.*; import org.papervision3d.core.render.data.*; public class AbstractRenderListItem implements IRenderListItem { public var screenDepth:Number; public function render(_arg1:RenderSessionData, _arg2:Graphics):void{ } } }//package org.papervision3d.core.render.command
Section 58
//IRenderListItem (org.papervision3d.core.render.command.IRenderListItem) package org.papervision3d.core.render.command { import flash.display.*; import org.papervision3d.core.render.data.*; public interface IRenderListItem { function render(_arg1:RenderSessionData, _arg2:Graphics):void; } }//package org.papervision3d.core.render.command
Section 59
//RenderableListItem (org.papervision3d.core.render.command.RenderableListItem) package org.papervision3d.core.render.command { import org.papervision3d.core.geom.renderables.*; import org.papervision3d.core.render.data.*; import flash.geom.*; import org.papervision3d.objects.*; public class RenderableListItem extends AbstractRenderListItem { public var renderableInstance:AbstractRenderable; public var renderable:Class; public var instance:DisplayObject3D; public function hitTestPoint2D(_arg1:Point, _arg2:RenderHitData):RenderHitData{ return (_arg2); } } }//package org.papervision3d.core.render.command
Section 60
//RenderLine (org.papervision3d.core.render.command.RenderLine) package org.papervision3d.core.render.command { import org.papervision3d.core.math.*; import org.papervision3d.core.geom.renderables.*; import flash.display.*; import org.papervision3d.core.render.data.*; import flash.geom.*; import org.papervision3d.materials.special.*; public class RenderLine extends RenderableListItem implements IRenderListItem { public var renderer:LineMaterial; private var l1:Number2D; private var l2:Number2D; public var line:Line3D; private var v:Number2D; private var cp3d:Number3D; private var p:Number2D; private static var mouseVector:Number3D = Number3D.ZERO; private static var lineVector:Number3D = Number3D.ZERO; public function RenderLine(_arg1:Line3D){ this.renderable = Line3D; this.renderableInstance = _arg1; this.line = _arg1; p = new Number2D(); l1 = new Number2D(); l2 = new Number2D(); v = new Number2D(); cp3d = new Number3D(); } override public function render(_arg1:RenderSessionData, _arg2:Graphics):void{ renderer.drawLine(line, _arg2, _arg1); } override public function hitTestPoint2D(_arg1:Point, _arg2:RenderHitData):RenderHitData{ var _local3:Number; var _local4:Number; var _local5:Number; if (renderer.interactive){ _local3 = line.size; p.reset(_arg1.x, _arg1.y); l1.reset(line.v0.vertex3DInstance.x, line.v0.vertex3DInstance.y); l2.reset(line.v1.vertex3DInstance.x, line.v1.vertex3DInstance.y); v.copyFrom(l2); v.minusEq(l1); _local4 = ((((p.x - l1.x) * (l2.x - l1.x)) + ((p.y - l1.y) * (l2.y - l1.y))) / ((v.x * v.x) + (v.y * v.y))); if ((((_local4 > 0)) && ((_local4 < 1)))){ v.multiplyEq(_local4); v.plusEq(l1); v.minusEq(p); _local5 = ((v.x * v.x) + (v.y * v.y)); if (_local5 < (_local3 * _local3)){ _arg2.displayObject3D = line.instance; _arg2.material = renderer; _arg2.renderable = line; _arg2.hasHit = true; cp3d.reset((line.v1.x - line.v0.x), (line.v1.y - line.v0.y), (line.v1.x - line.v0.x)); cp3d.x = (cp3d.x * _local4); cp3d.y = (cp3d.y * _local4); cp3d.z = (cp3d.z * _local4); cp3d.x = (cp3d.x + line.v0.x); cp3d.y = (cp3d.y + line.v0.y); cp3d.z = (cp3d.z + line.v0.z); _arg2.x = cp3d.x; _arg2.y = cp3d.y; _arg2.z = cp3d.z; _arg2.u = 0; _arg2.v = 0; return (_arg2); }; }; }; return (_arg2); } } }//package org.papervision3d.core.render.command
Section 61
//RenderParticle (org.papervision3d.core.render.command.RenderParticle) package org.papervision3d.core.render.command { import org.papervision3d.core.geom.renderables.*; import flash.display.*; import org.papervision3d.core.render.data.*; import flash.geom.*; import org.papervision3d.materials.special.*; public class RenderParticle extends RenderableListItem implements IRenderListItem { public var particle:Particle; public var renderMat:ParticleMaterial; public function RenderParticle(_arg1:Particle){ this.particle = _arg1; this.renderableInstance = _arg1; this.renderable = Particle; } override public function render(_arg1:RenderSessionData, _arg2:Graphics):void{ particle.material.drawParticle(particle, _arg2, _arg1); } override public function hitTestPoint2D(_arg1:Point, _arg2:RenderHitData):RenderHitData{ renderMat = particle.material; if (renderMat.interactive){ if (particle.renderRect.contains(_arg1.x, _arg1.y)){ _arg2.displayObject3D = particle.instance; _arg2.material = renderMat; _arg2.renderable = particle; _arg2.hasHit = true; _arg2.x = particle.x; _arg2.y = particle.y; _arg2.z = particle.z; _arg2.u = 0; _arg2.v = 0; return (_arg2); }; }; return (_arg2); } } }//package org.papervision3d.core.render.command
Section 62
//RenderTriangle (org.papervision3d.core.render.command.RenderTriangle) package org.papervision3d.core.render.command { import org.papervision3d.core.math.*; import org.papervision3d.core.proto.*; import org.papervision3d.core.geom.renderables.*; import flash.display.*; import org.papervision3d.core.render.data.*; import flash.geom.*; import org.papervision3d.core.render.draw.*; import org.papervision3d.materials.*; public class RenderTriangle extends RenderableListItem implements IRenderListItem { public var renderer:ITriangleDrawer; public var triangle:Triangle3D; public var container:Sprite; private var position:Number3D; public var renderMat:MaterialObject3D; protected static var resPA:Vertex3DInstance = new Vertex3DInstance(); protected static var resBA:Vertex3DInstance = new Vertex3DInstance(); protected static var vPoint:Vertex3DInstance = new Vertex3DInstance(); protected static var resRA:Vertex3DInstance = new Vertex3DInstance(); public function RenderTriangle(_arg1:Triangle3D):void{ position = new Number3D(); super(); this.triangle = _arg1; renderableInstance = _arg1; renderable = Triangle3D; } override public function render(_arg1:RenderSessionData, _arg2:Graphics):void{ renderer.drawTriangle(triangle, _arg2, _arg1); } override public function hitTestPoint2D(_arg1:Point, _arg2:RenderHitData):RenderHitData{ var _local3:Vertex3DInstance; var _local4:Vertex3DInstance; var _local5:Vertex3DInstance; var _local6:Vertex3DInstance; renderMat = triangle.material; if (!renderMat){ renderMat = triangle.instance.material; }; if (renderMat.interactive){ _local3 = RenderTriangle.vPoint; _local3.x = _arg1.x; _local3.y = _arg1.y; _local4 = triangle.v0.vertex3DInstance; _local5 = triangle.v1.vertex3DInstance; _local6 = triangle.v2.vertex3DInstance; if (sameSide(_local3, _local4, _local5, _local6)){ if (sameSide(_local3, _local5, _local4, _local6)){ if (sameSide(_local3, _local6, _local4, _local5)){ return (deepHitTest(triangle, _local3, _arg2)); }; }; }; }; return (_arg2); } public function sameSide(_arg1:Vertex3DInstance, _arg2:Vertex3DInstance, _arg3:Vertex3DInstance, _arg4:Vertex3DInstance):Boolean{ Vertex3DInstance.subTo(_arg4, _arg3, resBA); Vertex3DInstance.subTo(_arg1, _arg3, resPA); Vertex3DInstance.subTo(_arg2, _arg3, resRA); return (((Vertex3DInstance.cross(resBA, resPA) * Vertex3DInstance.cross(resBA, resRA)) > 0)); } private function deepHitTest(_arg1:Triangle3D, _arg2:Vertex3DInstance, _arg3:RenderHitData):RenderHitData{ var _local4:Vertex3DInstance; var _local5:Vertex3DInstance; var _local6:Vertex3DInstance; 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:Array; 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:BitmapData; var _local40:Number; var _local41:Number; var _local42:Number; var _local43:Number; var _local44:MovieMaterial; var _local45:Rectangle; _local4 = _arg1.v0.vertex3DInstance; _local5 = _arg1.v1.vertex3DInstance; _local6 = _arg1.v2.vertex3DInstance; _local7 = (_local6.x - _local4.x); _local8 = (_local6.y - _local4.y); _local9 = (_local5.x - _local4.x); _local10 = (_local5.y - _local4.y); _local11 = (_arg2.x - _local4.x); _local12 = (_arg2.y - _local4.y); _local13 = ((_local7 * _local7) + (_local8 * _local8)); _local14 = ((_local7 * _local9) + (_local8 * _local10)); _local15 = ((_local7 * _local11) + (_local8 * _local12)); _local16 = ((_local9 * _local9) + (_local10 * _local10)); _local17 = ((_local9 * _local11) + (_local10 * _local12)); _local18 = (1 / ((_local13 * _local16) - (_local14 * _local14))); _local19 = (((_local16 * _local15) - (_local14 * _local17)) * _local18); _local20 = (((_local13 * _local17) - (_local14 * _local15)) * _local18); _local21 = (_arg1.v2.x - _arg1.v0.x); _local22 = (_arg1.v2.y - _arg1.v0.y); _local23 = (_arg1.v2.z - _arg1.v0.z); _local24 = (_arg1.v1.x - _arg1.v0.x); _local25 = (_arg1.v1.y - _arg1.v0.y); _local26 = (_arg1.v1.z - _arg1.v0.z); _local27 = ((_arg1.v0.x + (_local21 * _local19)) + (_local24 * _local20)); _local28 = ((_arg1.v0.y + (_local22 * _local19)) + (_local25 * _local20)); _local29 = ((_arg1.v0.z + (_local23 * _local19)) + (_local26 * _local20)); _local30 = _arg1.uv; _local31 = _local30[0].u; _local32 = _local30[1].u; _local33 = _local30[2].u; _local34 = _local30[0].v; _local35 = _local30[1].v; _local36 = _local30[2].v; _local37 = ((((_local32 - _local31) * _local20) + ((_local33 - _local31) * _local19)) + _local31); _local38 = ((((_local35 - _local34) * _local20) + ((_local36 - _local34) * _local19)) + _local34); if (triangle.material){ renderMat = _arg1.material; } else { renderMat = _arg1.instance.material; }; _local39 = renderMat.bitmap; _local40 = 1; _local41 = 1; _local42 = 0; _local43 = 0; if ((renderMat is MovieMaterial)){ _local44 = (renderMat as MovieMaterial); _local45 = _local44.rect; if (_local45){ _local42 = _local45.x; _local43 = _local45.y; _local40 = _local45.width; _local41 = _local45.height; }; } else { if (_local39){ _local40 = (BitmapMaterial.AUTO_MIP_MAPPING) ? renderMat.widthOffset : _local39.width; _local41 = (BitmapMaterial.AUTO_MIP_MAPPING) ? renderMat.heightOffset : _local39.height; }; }; _arg3.displayObject3D = _arg1.instance; _arg3.material = renderMat; _arg3.renderable = _arg1; _arg3.hasHit = true; position.x = _local27; position.y = _local28; position.z = _local29; Matrix3D.multiplyVector(_arg1.instance.world, position); _arg3.x = position.x; _arg3.y = position.y; _arg3.z = position.z; _arg3.u = ((_local37 * _local40) + _local42); _arg3.v = ((_local41 - (_local38 * _local41)) + _local43); return (_arg3); } } }//package org.papervision3d.core.render.command
Section 63
//RenderHitData (org.papervision3d.core.render.data.RenderHitData) package org.papervision3d.core.render.data { import org.papervision3d.core.proto.*; import org.papervision3d.core.geom.renderables.*; import org.papervision3d.objects.*; public class RenderHitData { public var y:Number; public var endTime:int;// = 0 public var displayObject3D:DisplayObject3D; public var startTime:int;// = 0 public var hasHit:Boolean;// = false public var material:MaterialObject3D; public var renderable:IRenderable; public var u:Number; public var v:Number; public var x:Number; public var z:Number; public function RenderHitData():void{ startTime = 0; endTime = 0; hasHit = false; super(); } public function clear():void{ startTime = 0; endTime = 0; hasHit = false; displayObject3D = null; material = null; renderable = null; u = 0; v = 0; x = 0; y = 0; z = 0; } public function clone():RenderHitData{ var _local1:RenderHitData; _local1 = new RenderHitData(); _local1.startTime = startTime; _local1.endTime = endTime; _local1.hasHit = hasHit; _local1.displayObject3D = displayObject3D; _local1.material = material; _local1.renderable = renderable; _local1.u = u; _local1.v = v; _local1.x = x; _local1.y = y; _local1.z = z; return (_local1); } public function toString():String{ return (((displayObject3D + " ") + renderable)); } } }//package org.papervision3d.core.render.data
Section 64
//RenderSessionData (org.papervision3d.core.render.data.RenderSessionData) package org.papervision3d.core.render.data { import org.papervision3d.core.proto.*; import flash.display.*; import org.papervision3d.view.*; import org.papervision3d.core.culling.*; import org.papervision3d.core.render.*; public class RenderSessionData { public var renderer:IRenderEngine; public var particleCuller:IParticleCuller; public var viewPort:Viewport3D; public var triangleCuller:ITriangleCuller; public var container:Sprite; public var scene:SceneObject3D; public var renderStatistics:RenderStatistics; public var renderObjects:Array; public var camera:CameraObject3D; public var renderLayers:Array; public var sorted:Boolean; public function RenderSessionData():void{ this.renderStatistics = new RenderStatistics(); } public function destroy():void{ triangleCuller = null; particleCuller = null; viewPort = null; container = null; scene = null; camera = null; renderer = null; renderStatistics = null; renderObjects = null; renderLayers = null; } public function clone():RenderSessionData{ var _local1:RenderSessionData; _local1 = new RenderSessionData(); _local1.triangleCuller = triangleCuller; _local1.particleCuller = particleCuller; _local1.viewPort = viewPort; _local1.container = container; _local1.scene = scene; _local1.camera = camera; _local1.renderer = renderer; _local1.renderStatistics = renderStatistics.clone(); return (_local1); } } }//package org.papervision3d.core.render.data
Section 65
//RenderStatistics (org.papervision3d.core.render.data.RenderStatistics) package org.papervision3d.core.render.data { public class RenderStatistics { public var renderTime:int;// = 0 public var culledObjects:int;// = 0 public var shadedTriangles:int;// = 0 public var culledParticles:int;// = 0 public var culledTriangles:int;// = 0 public var triangles:int;// = 0 public var particles:int;// = 0 public var rendered:int;// = 0 public var projectionTime:int;// = 0 public var filteredObjects:int;// = 0 public var lines:int;// = 0 public function RenderStatistics(){ projectionTime = 0; renderTime = 0; rendered = 0; triangles = 0; culledTriangles = 0; particles = 0; culledParticles = 0; lines = 0; shadedTriangles = 0; filteredObjects = 0; culledObjects = 0; super(); } public function clone():RenderStatistics{ var _local1:RenderStatistics; _local1 = new RenderStatistics(); _local1.projectionTime = projectionTime; _local1.renderTime = renderTime; _local1.rendered = rendered; _local1.particles = particles; _local1.triangles = triangles; _local1.culledTriangles = culledTriangles; _local1.lines = lines; _local1.shadedTriangles = shadedTriangles; _local1.filteredObjects = filteredObjects; _local1.culledObjects = culledObjects; return (_local1); } public function clear():void{ projectionTime = 0; renderTime = 0; rendered = 0; particles = 0; triangles = 0; culledTriangles = 0; culledParticles = 0; lines = 0; shadedTriangles = 0; filteredObjects = 0; culledObjects = 0; } public function toString():String{ return (new String((((((((((((((((((("ProjectionTime:" + projectionTime) + " RenderTime:") + renderTime) + " Particles:") + particles) + " CulledParticles :") + culledParticles) + " Triangles:") + triangles) + " ShadedTriangles :") + shadedTriangles) + " CulledTriangles:") + culledTriangles) + " FilteredObjects:") + filteredObjects) + " CulledObjects:") + culledObjects) + ""))); } } }//package org.papervision3d.core.render.data
Section 66
//ILineDrawer (org.papervision3d.core.render.draw.ILineDrawer) package org.papervision3d.core.render.draw { import org.papervision3d.core.geom.renderables.*; import flash.display.*; import org.papervision3d.core.render.data.*; public interface ILineDrawer { function drawLine(_arg1:Line3D, _arg2:Graphics, _arg3:RenderSessionData):void; } }//package org.papervision3d.core.render.draw
Section 67
//IParticleDrawer (org.papervision3d.core.render.draw.IParticleDrawer) package org.papervision3d.core.render.draw { import org.papervision3d.core.geom.renderables.*; import flash.display.*; import org.papervision3d.core.render.data.*; public interface IParticleDrawer { function updateRenderRect(_arg1:Particle):void; function drawParticle(_arg1:Particle, _arg2:Graphics, _arg3:RenderSessionData):void; } }//package org.papervision3d.core.render.draw
Section 68
//ITriangleDrawer (org.papervision3d.core.render.draw.ITriangleDrawer) package org.papervision3d.core.render.draw { import org.papervision3d.core.geom.renderables.*; import flash.display.*; import org.papervision3d.core.render.data.*; import flash.geom.*; public interface ITriangleDrawer { function drawTriangle(_arg1:Triangle3D, _arg2:Graphics, _arg3:RenderSessionData, _arg4:BitmapData=null, _arg5:Matrix=null):void; } }//package org.papervision3d.core.render.draw
Section 69
//BasicRenderFilter (org.papervision3d.core.render.filter.BasicRenderFilter) package org.papervision3d.core.render.filter { public class BasicRenderFilter implements IRenderFilter { public function filter(_arg1:Array):int{ return (0); } } }//package org.papervision3d.core.render.filter
Section 70
//IRenderFilter (org.papervision3d.core.render.filter.IRenderFilter) package org.papervision3d.core.render.filter { public interface IRenderFilter { function filter(_arg1:Array):int; } }//package org.papervision3d.core.render.filter
Section 71
//IUpdateAfterMaterial (org.papervision3d.core.render.material.IUpdateAfterMaterial) package org.papervision3d.core.render.material { import org.papervision3d.core.render.data.*; public interface IUpdateAfterMaterial { function updateAfterRender(_arg1:RenderSessionData):void; } }//package org.papervision3d.core.render.material
Section 72
//IUpdateBeforeMaterial (org.papervision3d.core.render.material.IUpdateBeforeMaterial) package org.papervision3d.core.render.material { import org.papervision3d.core.render.data.*; public interface IUpdateBeforeMaterial { function updateBeforeRender(_arg1:RenderSessionData):void; } }//package org.papervision3d.core.render.material
Section 73
//MaterialManager (org.papervision3d.core.render.material.MaterialManager) package org.papervision3d.core.render.material { import org.papervision3d.core.proto.*; import org.papervision3d.core.render.data.*; import flash.utils.*; public class MaterialManager { private var materials:Dictionary; private static var instance:MaterialManager; public function MaterialManager():void{ if (instance){ throw (new Error("Only 1 instance of materialmanager allowed")); }; init(); } private function init():void{ materials = new Dictionary(true); } private function _unRegisterMaterial(_arg1:MaterialObject3D):void{ delete materials[_arg1]; } public function updateMaterialsAfterRender(_arg1:RenderSessionData):void{ var _local2:IUpdateAfterMaterial; var _local3:MaterialObject3D; for each (_local3 in materials) { if ((_local3 is IUpdateAfterMaterial)){ _local2 = (_local3 as IUpdateAfterMaterial); _local2.updateAfterRender(_arg1); }; }; } private function _registerMaterial(_arg1:MaterialObject3D):void{ materials[_arg1] = _arg1; } public function updateMaterialsBeforeRender(_arg1:RenderSessionData):void{ var _local2:IUpdateBeforeMaterial; var _local3:MaterialObject3D; for each (_local3 in materials) { if ((_local3 is IUpdateBeforeMaterial)){ _local2 = (_local3 as IUpdateBeforeMaterial); _local2.updateBeforeRender(_arg1); }; }; } public static function getInstance():MaterialManager{ if (!instance){ instance = new (MaterialManager); }; return (instance); } public static function unRegisterMaterial(_arg1:MaterialObject3D):void{ getInstance()._unRegisterMaterial(_arg1); } public static function registerMaterial(_arg1:MaterialObject3D):void{ getInstance()._registerMaterial(_arg1); } } }//package org.papervision3d.core.render.material
Section 74
//BasicProjectionPipeline (org.papervision3d.core.render.project.BasicProjectionPipeline) package org.papervision3d.core.render.project { import org.papervision3d.core.render.data.*; import org.papervision3d.objects.*; import org.papervision3d.core.culling.*; public class BasicProjectionPipeline extends ProjectionPipeline { public function BasicProjectionPipeline(){ init(); } protected function init():void{ } protected function projectObject(_arg1:DisplayObject3D, _arg2:RenderSessionData):void{ _arg1.project(_arg2.camera, _arg2); } override public function project(_arg1:RenderSessionData):void{ var _local2:Array; var _local3:DisplayObject3D; var _local4:Number; _arg1.camera.transformView(); _local2 = _arg1.renderObjects; _local4 = _local2.length; if ((_arg1.camera is IObjectCuller)){ for each (_local3 in _local2) { if (_local3.visible){ if (_arg1.viewPort.viewportObjectFilter){ if (_arg1.viewPort.viewportObjectFilter.testObject(_local3)){ _local3.view.calculateMultiply4x4(_arg1.camera.eye, _local3.transform); projectObject(_local3, _arg1); } else { _arg1.renderStatistics.filteredObjects++; }; } else { _local3.view.calculateMultiply4x4(_arg1.camera.eye, _local3.transform); projectObject(_local3, _arg1); }; }; }; } else { for each (_local3 in _local2) { if (_local3.visible){ if (_arg1.viewPort.viewportObjectFilter){ if (_arg1.viewPort.viewportObjectFilter.testObject(_local3)){ _local3.view.calculateMultiply(_arg1.camera.eye, _local3.transform); projectObject(_local3, _arg1); } else { _arg1.renderStatistics.filteredObjects++; }; } else { _local3.view.calculateMultiply(_arg1.camera.eye, _local3.transform); projectObject(_local3, _arg1); }; }; }; }; } } }//package org.papervision3d.core.render.project
Section 75
//ProjectionPipeline (org.papervision3d.core.render.project.ProjectionPipeline) package org.papervision3d.core.render.project { import org.papervision3d.core.render.data.*; public class ProjectionPipeline { public function project(_arg1:RenderSessionData):void{ } } }//package org.papervision3d.core.render.project
Section 76
//BasicRenderSorter (org.papervision3d.core.render.sort.BasicRenderSorter) package org.papervision3d.core.render.sort { public class BasicRenderSorter implements IRenderSorter { public function sort(_arg1:Array):void{ _arg1.sortOn("screenDepth", Array.NUMERIC); } } }//package org.papervision3d.core.render.sort
Section 77
//IRenderSorter (org.papervision3d.core.render.sort.IRenderSorter) package org.papervision3d.core.render.sort { public interface IRenderSorter { function sort(_arg1:Array):void; } }//package org.papervision3d.core.render.sort
Section 78
//AbstractRenderEngine (org.papervision3d.core.render.AbstractRenderEngine) package org.papervision3d.core.render { import org.papervision3d.core.proto.*; import flash.events.*; import org.papervision3d.core.render.data.*; import org.papervision3d.view.*; import org.papervision3d.core.render.command.*; public class AbstractRenderEngine extends EventDispatcher implements IRenderEngine { public function AbstractRenderEngine(_arg1:IEventDispatcher=null){ super(_arg1); } public function removeFromRenderList(_arg1:IRenderListItem):int{ return (0); } public function addToRenderList(_arg1:IRenderListItem):int{ return (0); } public function renderScene(_arg1:SceneObject3D, _arg2:CameraObject3D, _arg3:Viewport3D, _arg4:Boolean=true):RenderStatistics{ return (null); } } }//package org.papervision3d.core.render
Section 79
//IRenderEngine (org.papervision3d.core.render.IRenderEngine) package org.papervision3d.core.render { import org.papervision3d.core.proto.*; import org.papervision3d.core.render.data.*; import org.papervision3d.view.*; import org.papervision3d.core.render.command.*; public interface IRenderEngine { function addToRenderList(_arg1:IRenderListItem):int; function removeFromRenderList(_arg1:IRenderListItem):int; function renderScene(_arg1:SceneObject3D, _arg2:CameraObject3D, _arg3:Viewport3D, _arg4:Boolean=true):RenderStatistics; } }//package org.papervision3d.core.render
Section 80
//IVirtualMouseEvent (org.papervision3d.core.utils.virtualmouse.IVirtualMouseEvent) package org.papervision3d.core.utils.virtualmouse { public interface IVirtualMouseEvent { } }//package org.papervision3d.core.utils.virtualmouse
Section 81
//VirtualMouse (org.papervision3d.core.utils.virtualmouse.VirtualMouse) package org.papervision3d.core.utils.virtualmouse { import flash.display.*; import flash.events.*; import flash.geom.*; import com.blitzagency.xray.logger.*; import flash.utils.*; import org.papervision3d.core.components.as3.utils.*; public class VirtualMouse extends EventDispatcher { private var _container:Sprite; private var lastDownTarget:DisplayObject; private var target:InteractiveObject; private var updateMouseDown:Boolean;// = false private var eventEvent:Class; private var _lastEvent:Event; private var mouseEventEvent:Class; private var location:Point; private var delta:int;// = 0 private var disabledEvents:Object; private var log:XrayLog; private var ignoredInstances:Dictionary; private var isLocked:Boolean;// = false private var lastWithinStage:Boolean;// = true private var lastLocation:Point; private var isDoubleClickEvent:Boolean;// = false private var lastMouseDown:Boolean;// = false private var altKey:Boolean;// = false private var _useNativeEvents:Boolean;// = false private var ctrlKey:Boolean;// = false private var shiftKey:Boolean;// = false private var _stage:Stage; public static const UPDATE:String = "update"; private static var _mouseIsDown:Boolean = false; public function VirtualMouse(_arg1:Stage=null, _arg2:Sprite=null, _arg3:Number=0, _arg4:Number=0){ altKey = false; ctrlKey = false; shiftKey = false; delta = 0; isLocked = false; isDoubleClickEvent = false; disabledEvents = new Object(); ignoredInstances = new Dictionary(true); lastMouseDown = false; updateMouseDown = false; lastWithinStage = true; _useNativeEvents = false; eventEvent = VirtualMouseEvent; mouseEventEvent = VirtualMouseMouseEvent; log = new XrayLog(); super(); this.stage = _arg1; this.container = _arg2; location = new Point(_arg3, _arg4); lastLocation = location.clone(); addEventListener(UPDATE, handleUpdate); update(); } public function get mouseIsDown():Boolean{ return (_mouseIsDown); } public function get stage():Stage{ return (_stage); } public function exitContainer():void{ var _local1:Point; _local1 = target.globalToLocal(location); if (!disabledEvents[MouseEvent.MOUSE_OUT]){ _lastEvent = new mouseEventEvent(MouseEvent.MOUSE_OUT, true, false, _local1.x, _local1.y, container, ctrlKey, altKey, shiftKey, _mouseIsDown, delta); container.dispatchEvent(new mouseEventEvent(MouseEvent.MOUSE_OUT, true, false, _local1.x, _local1.y, container, ctrlKey, altKey, shiftKey, _mouseIsDown, delta)); dispatchEvent(new mouseEventEvent(MouseEvent.MOUSE_OUT, true, false, _local1.x, _local1.y, container, ctrlKey, altKey, shiftKey, _mouseIsDown, delta)); }; if (!disabledEvents[MouseEvent.ROLL_OUT]){ _lastEvent = new mouseEventEvent(MouseEvent.ROLL_OUT, false, false, _local1.x, _local1.y, container, ctrlKey, altKey, shiftKey, _mouseIsDown, delta); container.dispatchEvent(new mouseEventEvent(MouseEvent.ROLL_OUT, false, false, _local1.x, _local1.y, container, ctrlKey, altKey, shiftKey, _mouseIsDown, delta)); dispatchEvent(new mouseEventEvent(MouseEvent.ROLL_OUT, false, false, _local1.x, _local1.y, container, ctrlKey, altKey, shiftKey, _mouseIsDown, delta)); }; if (target != container){ if (!disabledEvents[MouseEvent.MOUSE_OUT]){ _lastEvent = new mouseEventEvent(MouseEvent.MOUSE_OUT, true, false, _local1.x, _local1.y, container, ctrlKey, altKey, shiftKey, _mouseIsDown, delta); target.dispatchEvent(new mouseEventEvent(MouseEvent.MOUSE_OUT, true, false, _local1.x, _local1.y, container, ctrlKey, altKey, shiftKey, _mouseIsDown, delta)); dispatchEvent(new mouseEventEvent(MouseEvent.MOUSE_OUT, true, false, _local1.x, _local1.y, container, ctrlKey, altKey, shiftKey, _mouseIsDown, delta)); }; if (!disabledEvents[MouseEvent.ROLL_OUT]){ _lastEvent = new mouseEventEvent(MouseEvent.ROLL_OUT, false, false, _local1.x, _local1.y, container, ctrlKey, altKey, shiftKey, _mouseIsDown, delta); target.dispatchEvent(new mouseEventEvent(MouseEvent.ROLL_OUT, false, false, _local1.x, _local1.y, container, ctrlKey, altKey, shiftKey, _mouseIsDown, delta)); dispatchEvent(new mouseEventEvent(MouseEvent.ROLL_OUT, false, false, _local1.x, _local1.y, container, ctrlKey, altKey, shiftKey, _mouseIsDown, delta)); }; }; target = _stage; } public function release():void{ updateMouseDown = true; _mouseIsDown = false; if (!isLocked){ update(); }; } public function click():void{ press(); release(); } public function get container():Sprite{ return (_container); } public function set container(_arg1:Sprite):void{ _container = _arg1; } public function get y():Number{ return (location.y); } public function set x(_arg1:Number):void{ location.x = _arg1; if (!isLocked){ update(); }; } public function disableEvent(_arg1:String):void{ disabledEvents[_arg1] = true; } public function get lastEvent():Event{ return (_lastEvent); } private function handleUpdate(_arg1:Event):void{ var _local2:Point; var _local3:Array; var _local4:InteractiveObject; var _local5:DisplayObject; var _local6:int; var _local7:Point; var _local8:Point; var _local9:Boolean; if (!container){ return; }; _local2 = CoordinateTools.localToLocal(container, stage, location); _local3 = container.getObjectsUnderPoint(location); _local6 = _local3.length; while (_local6--) { _local5 = _local3[_local6]; while (_local5) { if (ignoredInstances[_local5]){ _local4 = null; break; }; if (((_local4) && ((_local5 is SimpleButton)))){ _local4 = null; } else { if (((_local4) && (!(DisplayObjectContainer(_local5).mouseChildren)))){ _local4 = null; }; }; if (((((!(_local4)) && ((_local5 is InteractiveObject)))) && (InteractiveObject(_local5).mouseEnabled))){ _local4 = InteractiveObject(_local5); }; _local5 = _local5.parent; }; if (_local4){ break; }; }; if (!_local4){ _local4 = _stage; }; _local7 = target.globalToLocal(location); _local8 = _local4.globalToLocal(location); if (((!((lastLocation.x == location.x))) || (!((lastLocation.y == location.y))))){ _local9 = false; if (stage){ _local9 = (((((((location.x >= 0)) && ((location.y >= 0)))) && ((location.x <= stage.stageWidth)))) && ((location.y <= stage.stageHeight))); }; if (((((!(_local9)) && (lastWithinStage))) && (!(disabledEvents[Event.MOUSE_LEAVE])))){ _lastEvent = new eventEvent(Event.MOUSE_LEAVE, false, false); stage.dispatchEvent(_lastEvent); dispatchEvent(_lastEvent); }; if (((_local9) && (!(disabledEvents[MouseEvent.MOUSE_MOVE])))){ _lastEvent = new mouseEventEvent(MouseEvent.MOUSE_MOVE, true, false, _local8.x, _local8.y, _local4, ctrlKey, altKey, shiftKey, _mouseIsDown, delta); _local4.dispatchEvent(_lastEvent); dispatchEvent(_lastEvent); }; lastWithinStage = _local9; }; if (_local4 != target){ if (!disabledEvents[MouseEvent.MOUSE_OUT]){ _lastEvent = new mouseEventEvent(MouseEvent.MOUSE_OUT, true, false, _local7.x, _local7.y, _local4, ctrlKey, altKey, shiftKey, _mouseIsDown, delta); target.dispatchEvent(_lastEvent); dispatchEvent(_lastEvent); }; if (!disabledEvents[MouseEvent.ROLL_OUT]){ _lastEvent = new mouseEventEvent(MouseEvent.ROLL_OUT, false, false, _local7.x, _local7.y, _local4, ctrlKey, altKey, shiftKey, _mouseIsDown, delta); target.dispatchEvent(_lastEvent); dispatchEvent(_lastEvent); }; if (!disabledEvents[MouseEvent.MOUSE_OVER]){ _lastEvent = new mouseEventEvent(MouseEvent.MOUSE_OVER, true, false, _local8.x, _local8.y, target, ctrlKey, altKey, shiftKey, _mouseIsDown, delta); _local4.dispatchEvent(_lastEvent); dispatchEvent(_lastEvent); }; if (!disabledEvents[MouseEvent.ROLL_OVER]){ _lastEvent = new mouseEventEvent(MouseEvent.ROLL_OVER, false, false, _local8.x, _local8.y, target, ctrlKey, altKey, shiftKey, _mouseIsDown, delta); _local4.dispatchEvent(_lastEvent); dispatchEvent(_lastEvent); }; }; if (updateMouseDown){ if (_mouseIsDown){ if (!disabledEvents[MouseEvent.MOUSE_DOWN]){ _lastEvent = new mouseEventEvent(MouseEvent.MOUSE_DOWN, true, false, _local8.x, _local8.y, _local4, ctrlKey, altKey, shiftKey, _mouseIsDown, delta); _local4.dispatchEvent(_lastEvent); dispatchEvent(_lastEvent); }; lastDownTarget = _local4; updateMouseDown = false; } else { if (!disabledEvents[MouseEvent.MOUSE_UP]){ _lastEvent = new mouseEventEvent(MouseEvent.MOUSE_UP, true, false, _local8.x, _local8.y, _local4, ctrlKey, altKey, shiftKey, _mouseIsDown, delta); _local4.dispatchEvent(_lastEvent); dispatchEvent(_lastEvent); }; if (((!(disabledEvents[MouseEvent.CLICK])) && ((_local4 == lastDownTarget)))){ _lastEvent = new mouseEventEvent(MouseEvent.CLICK, true, false, _local8.x, _local8.y, _local4, ctrlKey, altKey, shiftKey, _mouseIsDown, delta); _local4.dispatchEvent(_lastEvent); dispatchEvent(_lastEvent); }; lastDownTarget = null; updateMouseDown = false; }; }; if (((((isDoubleClickEvent) && (!(disabledEvents[MouseEvent.DOUBLE_CLICK])))) && (_local4.doubleClickEnabled))){ _lastEvent = new mouseEventEvent(MouseEvent.DOUBLE_CLICK, true, false, _local8.x, _local8.y, _local4, ctrlKey, altKey, shiftKey, _mouseIsDown, delta); _local4.dispatchEvent(_lastEvent); dispatchEvent(_lastEvent); }; lastLocation = location.clone(); lastMouseDown = _mouseIsDown; target = _local4; } public function getLocation():Point{ return (location.clone()); } public function get x():Number{ return (location.x); } public function lock():void{ isLocked = true; } public function get useNativeEvents():Boolean{ return (_useNativeEvents); } public function setLocation(_arg1, _arg2=null):void{ var _local3:Point; if ((_arg1 is Point)){ _local3 = (_arg1 as Point); trace(_local3); location.x = _local3.x; location.y = _local3.y; } else { location.x = Number(_arg1); location.y = Number(_arg2); }; if (!isLocked){ update(); }; } private function keyHandler(_arg1:KeyboardEvent):void{ altKey = _arg1.altKey; ctrlKey = _arg1.ctrlKey; shiftKey = _arg1.shiftKey; } public function unignore(_arg1:DisplayObject):void{ if ((_arg1 in ignoredInstances)){ delete ignoredInstances[_arg1]; }; } public function doubleClick():void{ if (isLocked){ release(); } else { click(); press(); isDoubleClickEvent = true; release(); isDoubleClickEvent = false; }; } public function update():void{ dispatchEvent(new Event(UPDATE, false, false)); } public function ignore(_arg1:DisplayObject):void{ ignoredInstances[_arg1] = true; } public function unlock():void{ isLocked = false; update(); } public function enableEvent(_arg1:String):void{ if ((_arg1 in disabledEvents)){ delete disabledEvents[_arg1]; }; } public function press():void{ updateMouseDown = true; _mouseIsDown = true; if (!isLocked){ update(); }; } public function set useNativeEvents(_arg1:Boolean):void{ if (_arg1 == _useNativeEvents){ return; }; _useNativeEvents = _arg1; if (_useNativeEvents){ eventEvent = VirtualMouseEvent; mouseEventEvent = VirtualMouseMouseEvent; } else { eventEvent = Event; mouseEventEvent = MouseEvent; }; } public function set y(_arg1:Number):void{ location.y = _arg1; if (!isLocked){ update(); }; } public function set stage(_arg1:Stage):void{ var _local2:Boolean; if (_stage){ _local2 = true; _stage.removeEventListener(KeyboardEvent.KEY_DOWN, keyHandler); _stage.removeEventListener(KeyboardEvent.KEY_UP, keyHandler); } else { _local2 = false; }; _stage = _arg1; if (_stage){ _stage.addEventListener(KeyboardEvent.KEY_DOWN, keyHandler); _stage.addEventListener(KeyboardEvent.KEY_UP, keyHandler); target = _stage; if (!_local2){ update(); }; }; } } }//package org.papervision3d.core.utils.virtualmouse
Section 82
//VirtualMouseEvent (org.papervision3d.core.utils.virtualmouse.VirtualMouseEvent) package org.papervision3d.core.utils.virtualmouse { import flash.events.*; public class VirtualMouseEvent extends Event implements IVirtualMouseEvent { public function VirtualMouseEvent(_arg1:String, _arg2:Boolean=false, _arg3:Boolean=false){ super(_arg1, _arg2, _arg3); } } }//package org.papervision3d.core.utils.virtualmouse
Section 83
//VirtualMouseMouseEvent (org.papervision3d.core.utils.virtualmouse.VirtualMouseMouseEvent) package org.papervision3d.core.utils.virtualmouse { import flash.display.*; import flash.events.*; public class VirtualMouseMouseEvent extends MouseEvent implements IVirtualMouseEvent { public function VirtualMouseMouseEvent(_arg1:String, _arg2:Boolean=false, _arg3:Boolean=false, _arg4:Number=NaN, _arg5:Number=NaN, _arg6:InteractiveObject=null, _arg7:Boolean=false, _arg8:Boolean=false, _arg9:Boolean=false, _arg10:Boolean=false, _arg11:int=0){ super(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7, _arg8, _arg9, _arg10, _arg11); } } }//package org.papervision3d.core.utils.virtualmouse
Section 84
//InteractiveSceneManager (org.papervision3d.core.utils.InteractiveSceneManager) package org.papervision3d.core.utils { import org.papervision3d.core.proto.*; import org.papervision3d.core.geom.renderables.*; import flash.display.*; import flash.events.*; import org.papervision3d.core.render.data.*; import flash.geom.*; import org.papervision3d.view.*; import org.papervision3d.objects.*; import com.blitzagency.xray.logger.*; import org.papervision3d.events.*; import org.papervision3d.core.utils.virtualmouse.*; import org.papervision3d.materials.*; public class InteractiveSceneManager extends EventDispatcher { public var container:Sprite; public var currentDisplayObject3D:DisplayObject3D; public var viewport:Viewport3D; protected var log:XrayLog; public var currentMaterial:MaterialObject3D; public var debug:Boolean;// = false public var mouse3D:Mouse3D; public var enableOverOut:Boolean;// = true public var virtualMouse:VirtualMouse; public var renderHitData:RenderHitData; public var currentMouseDO3D:DisplayObject3D;// = null public static var MOUSE_IS_DOWN:Boolean = false; public function InteractiveSceneManager(_arg1:Viewport3D){ virtualMouse = new VirtualMouse(); mouse3D = new Mouse3D(); enableOverOut = true; currentMouseDO3D = null; debug = false; log = new XrayLog(); super(); this.viewport = _arg1; this.container = _arg1.containerSprite; init(); } protected function initVirtualMouse():void{ virtualMouse.stage = container.stage; virtualMouse.container = container; } public function init():void{ if (container){ if (container.stage){ initVirtualMouse(); initListeners(); } else { container.addEventListener(Event.ADDED_TO_STAGE, handleAddedToStage); }; }; } public function initListeners():void{ if (viewport.interactive){ container.addEventListener(MouseEvent.MOUSE_DOWN, handleMousePress); container.addEventListener(MouseEvent.MOUSE_UP, handleMouseRelease); container.addEventListener(MouseEvent.CLICK, handleMouseClick); container.stage.addEventListener(MouseEvent.MOUSE_MOVE, handleMouseMove); }; } public function updateRenderHitData():void{ resolveRenderHitData(); currentDisplayObject3D = renderHitData.displayObject3D; currentMaterial = renderHitData.material; manageOverOut(); } protected function handleMouseClick(_arg1:MouseEvent):void{ if ((_arg1 is IVirtualMouseEvent)){ return; }; if (((renderHitData) && (renderHitData.hasHit))){ dispatchObjectEvent(InteractiveScene3DEvent.OBJECT_CLICK, currentDisplayObject3D); }; } protected function handleMouseOut(_arg1:DisplayObject3D):void{ var _local2:MovieMaterial; if (_arg1){ _local2 = (_arg1.material as MovieMaterial); if (_local2){ virtualMouse.exitContainer(); }; }; dispatchObjectEvent(InteractiveScene3DEvent.OBJECT_OUT, _arg1); } protected function manageOverOut():void{ if (!enableOverOut){ return; }; if (((renderHitData) && (renderHitData.hasHit))){ if (((!(currentMouseDO3D)) && (currentDisplayObject3D))){ handleMouseOver(currentDisplayObject3D); currentMouseDO3D = currentDisplayObject3D; } else { if (((currentMouseDO3D) && (!((currentMouseDO3D == currentDisplayObject3D))))){ handleMouseOut(currentMouseDO3D); handleMouseOver(currentDisplayObject3D); currentMouseDO3D = currentDisplayObject3D; }; }; } else { if (currentMouseDO3D != null){ handleMouseOut(currentMouseDO3D); currentMouseDO3D = null; }; }; } protected function dispatchObjectEvent(_arg1:String, _arg2:DisplayObject3D):void{ var _local3:Number; var _local4:Number; if (debug){ log.debug(_arg1, _arg2.name); }; if (((renderHitData) && (renderHitData.hasHit))){ _local3 = (renderHitData.u) ? renderHitData.u : 0; _local4 = (renderHitData.v) ? renderHitData.v : 0; dispatchEvent(new InteractiveScene3DEvent(_arg1, _arg2, container, (renderHitData.renderable as Triangle3D), _local3, _local4)); _arg2.dispatchEvent(new InteractiveScene3DEvent(_arg1, _arg2, container, (renderHitData.renderable as Triangle3D), _local3, _local4)); } else { dispatchEvent(new InteractiveScene3DEvent(_arg1, _arg2, container)); if (_arg2){ _arg2.dispatchEvent(new InteractiveScene3DEvent(_arg1, _arg2, container)); }; }; } protected function handleMouseMove(_arg1:MouseEvent):void{ var _local2:MovieMaterial; updateRenderHitData(); if ((_arg1 is IVirtualMouseEvent)){ return; }; if (((virtualMouse) && (renderHitData))){ _local2 = (currentMaterial as MovieMaterial); if (_local2){ virtualMouse.container = (_local2.movie as Sprite); }; if (virtualMouse.container){ virtualMouse.setLocation(renderHitData.u, renderHitData.v); }; if (((((Mouse3D.enabled) && (renderHitData))) && (renderHitData.hasHit))){ mouse3D.updatePosition(renderHitData); }; dispatchObjectEvent(InteractiveScene3DEvent.OBJECT_MOVE, currentDisplayObject3D); } else { if (((renderHitData) && (renderHitData.hasHit))){ dispatchObjectEvent(InteractiveScene3DEvent.OBJECT_MOVE, currentDisplayObject3D); }; }; } protected function handleMouseOver(_arg1:DisplayObject3D):void{ dispatchObjectEvent(InteractiveScene3DEvent.OBJECT_OVER, _arg1); } protected function resolveRenderHitData():void{ var _local1:Point; _local1 = new Point(); _local1.x = container.mouseX; _local1.y = container.mouseY; renderHitData = (viewport.hitTestPoint2D(_local1) as RenderHitData); } protected function handleMousePress(_arg1:MouseEvent):void{ if ((_arg1 is IVirtualMouseEvent)){ return; }; MOUSE_IS_DOWN = true; if (virtualMouse){ virtualMouse.press(); }; if (((((Mouse3D.enabled) && (renderHitData))) && (!((renderHitData.renderable == null))))){ mouse3D.updatePosition(renderHitData); }; if (((renderHitData) && (renderHitData.hasHit))){ dispatchObjectEvent(InteractiveScene3DEvent.OBJECT_PRESS, currentDisplayObject3D); }; } protected function handleMouseRelease(_arg1:MouseEvent):void{ if ((_arg1 is IVirtualMouseEvent)){ return; }; MOUSE_IS_DOWN = false; if (virtualMouse){ virtualMouse.release(); }; if (((((Mouse3D.enabled) && (renderHitData))) && (!((renderHitData.renderable == null))))){ mouse3D.updatePosition(renderHitData); }; if (((renderHitData) && (renderHitData.hasHit))){ dispatchObjectEvent(InteractiveScene3DEvent.OBJECT_RELEASE, currentDisplayObject3D); }; } protected function handleAddedToStage(_arg1:Event):void{ initVirtualMouse(); initListeners(); } public function destroy():void{ viewport = null; renderHitData = null; currentDisplayObject3D = null; currentMaterial = null; currentMouseDO3D = null; container.removeEventListener(MouseEvent.MOUSE_DOWN, handleMousePress); container.removeEventListener(MouseEvent.MOUSE_UP, handleMouseRelease); container.removeEventListener(MouseEvent.CLICK, handleMouseClick); if (container.stage){ container.stage.removeEventListener(MouseEvent.MOUSE_MOVE, handleMouseMove); }; container = null; } } }//package org.papervision3d.core.utils
Section 85
//Mouse3D (org.papervision3d.core.utils.Mouse3D) package org.papervision3d.core.utils { import org.papervision3d.core.math.*; import org.papervision3d.core.geom.renderables.*; import org.papervision3d.core.render.data.*; import org.papervision3d.objects.*; public class Mouse3D extends DisplayObject3D { private var position:Number3D; private var target:Number3D; public static var enabled:Boolean = false; private static var UP:Number3D = new Number3D(0, 1, 0); public function Mouse3D():void{ position = new Number3D(0, 0, 0); target = new Number3D(); super(); } public function updatePosition(_arg1:RenderHitData):void{ var _local2:Triangle3D; var _local3:Number3D; var _local4:Matrix3D; var _local5:Number3D; var _local6:Number3D; var _local7:Matrix3D; _local2 = (_arg1.renderable as Triangle3D); target.x = _local2.faceNormal.x; target.y = _local2.faceNormal.y; target.z = _local2.faceNormal.z; _local3 = Number3D.sub(target, position); _local3.normalize(); if (_local3.modulo > 0.1){ _local5 = Number3D.cross(_local3, UP); _local5.normalize(); _local6 = Number3D.cross(_local3, _local5); _local6.normalize(); _local7 = this.transform; _local7.n11 = _local5.x; _local7.n21 = _local5.y; _local7.n31 = _local5.z; _local7.n12 = -(_local6.x); _local7.n22 = -(_local6.y); _local7.n32 = -(_local6.z); _local7.n13 = _local3.x; _local7.n23 = _local3.y; _local7.n33 = _local3.z; }; _local4 = Matrix3D.IDENTITY; this.transform = Matrix3D.multiply(_local2.instance.world, _local7); x = _arg1.x; y = _arg1.y; z = _arg1.z; } } }//package org.papervision3d.core.utils
Section 86
//StopWatch (org.papervision3d.core.utils.StopWatch) package org.papervision3d.core.utils { import flash.events.*; import flash.utils.*; public class StopWatch extends EventDispatcher { private var startTime:int; private var elapsedTime:int; private var stopTime:int; private var isRunning:Boolean; public function stop():int{ if (isRunning){ stopTime = getTimer(); elapsedTime = (stopTime - startTime); isRunning = false; return (elapsedTime); }; return (0); } public function start():void{ if (!isRunning){ startTime = getTimer(); isRunning = true; }; } public function reset():void{ isRunning = false; } } }//package org.papervision3d.core.utils
Section 87
//IViewport3D (org.papervision3d.core.view.IViewport3D) package org.papervision3d.core.view { import org.papervision3d.core.render.data.*; public interface IViewport3D { function updateAfterRender(_arg1:RenderSessionData):void; function updateBeforeRender(_arg1:RenderSessionData):void; } }//package org.papervision3d.core.view
Section 88
//FileLoadEvent (org.papervision3d.events.FileLoadEvent) package org.papervision3d.events { import flash.events.*; public class FileLoadEvent extends Event { public var bytesLoaded:Number;// = -1 public var message:String;// = "" public var bytesTotal:Number;// = -1 public var dataObj:Object;// = null public var file:String;// = "" public static const COLLADA_MATERIALS_DONE:String = "colladaMaterialsDone"; public static const LOAD_PROGRESS:String = "loadProgress"; public static const ANIMATIONS_COMPLETE:String = "animationsComplete"; public static const SECURITY_LOAD_ERROR:String = "securityLoadError"; public static const LOAD_ERROR:String = "loadError"; public static const LOAD_COMPLETE:String = "loadComplete"; public static const ANIMATIONS_PROGRESS:String = "animationsProgress"; public function FileLoadEvent(_arg1:String, _arg2:String="", _arg3:Number=-1, _arg4:Number=-1, _arg5:String="", _arg6:Object=null, _arg7:Boolean=false, _arg8:Boolean=false){ file = ""; bytesLoaded = -1; bytesTotal = -1; message = ""; dataObj = null; super(_arg1, _arg7, _arg8); this.file = _arg2; this.bytesLoaded = _arg3; this.bytesTotal = _arg4; this.message = _arg5; this.dataObj = _arg6; } } }//package org.papervision3d.events
Section 89
//InteractiveScene3DEvent (org.papervision3d.events.InteractiveScene3DEvent) package org.papervision3d.events { import org.papervision3d.core.geom.renderables.*; import flash.display.*; import flash.events.*; import org.papervision3d.core.render.data.*; import org.papervision3d.objects.*; public class InteractiveScene3DEvent extends Event { public var sprite:Sprite;// = null public var displayObject3D:DisplayObject3D;// = null public var face3d:Triangle3D;// = null public var renderHitData:RenderHitData; public var x:Number;// = 0 public var y:Number;// = 0 public static const OBJECT_ADDED:String = "objectAdded"; public static const OBJECT_PRESS:String = "mousePress"; public static const OBJECT_RELEASE:String = "mouseRelease"; public static const OBJECT_CLICK:String = "mouseClick"; public static const OBJECT_RELEASE_OUTSIDE:String = "mouseReleaseOutside"; public static const OBJECT_OUT:String = "mouseOut"; public static const OBJECT_MOVE:String = "mouseMove"; public static const OBJECT_OVER:String = "mouseOver"; public function InteractiveScene3DEvent(_arg1:String, _arg2:DisplayObject3D=null, _arg3:Sprite=null, _arg4:Triangle3D=null, _arg5:Number=0, _arg6:Number=0, _arg7:RenderHitData=null, _arg8:Boolean=false, _arg9:Boolean=false){ displayObject3D = null; sprite = null; face3d = null; x = 0; y = 0; super(_arg1, _arg8, _arg9); this.displayObject3D = _arg2; this.sprite = _arg3; this.face3d = _arg4; this.x = _arg5; this.y = _arg6; this.renderHitData = _arg7; } override public function toString():String{ return (((((((("Type : " + type) + ", DO3D : ") + displayObject3D) + " Sprite : ") + sprite) + " Face : ") + face3d)); } } }//package org.papervision3d.events
Section 90
//RendererEvent (org.papervision3d.events.RendererEvent) package org.papervision3d.events { import flash.events.*; import org.papervision3d.core.render.data.*; public class RendererEvent extends Event { public var renderSessionData:RenderSessionData; public static const PROJECTION_DONE:String = "projectionDone"; public static const RENDER_DONE:String = "renderDone"; public function RendererEvent(_arg1:String, _arg2:RenderSessionData){ super(_arg1); this.renderSessionData = _arg2; } public function clear():void{ renderSessionData = null; } override public function clone():Event{ return (new RendererEvent(type, renderSessionData)); } } }//package org.papervision3d.events
Section 91
//LineMaterial (org.papervision3d.materials.special.LineMaterial) package org.papervision3d.materials.special { import org.papervision3d.core.proto.*; import org.papervision3d.core.geom.renderables.*; import flash.display.*; import org.papervision3d.core.render.data.*; import org.papervision3d.core.render.draw.*; public class LineMaterial extends MaterialObject3D implements ILineDrawer { public function LineMaterial(_arg1:Number=0xFF0000, _arg2:Number=1){ this.lineColor = _arg1; this.lineAlpha = _arg2; } public function drawLine(_arg1:Line3D, _arg2:Graphics, _arg3:RenderSessionData):void{ _arg2.lineStyle(_arg1.size, lineColor, lineAlpha); _arg2.moveTo(_arg1.v0.vertex3DInstance.x, _arg1.v0.vertex3DInstance.y); if (_arg1.cV){ _arg2.curveTo(_arg1.cV.vertex3DInstance.x, _arg1.cV.vertex3DInstance.y, _arg1.v1.vertex3DInstance.x, _arg1.v1.vertex3DInstance.y); } else { _arg2.lineTo(_arg1.v1.vertex3DInstance.x, _arg1.v1.vertex3DInstance.y); }; _arg2.moveTo(0, 0); _arg2.lineStyle(); } } }//package org.papervision3d.materials.special
Section 92
//ParticleMaterial (org.papervision3d.materials.special.ParticleMaterial) package org.papervision3d.materials.special { import org.papervision3d.core.proto.*; import org.papervision3d.core.geom.renderables.*; import flash.display.*; import org.papervision3d.core.render.data.*; import flash.geom.*; import org.papervision3d.core.render.draw.*; public class ParticleMaterial extends MaterialObject3D implements IParticleDrawer { public var shape:int; public static var SHAPE_SQUARE:int = 0; public static var SHAPE_CIRCLE:int = 1; public function ParticleMaterial(_arg1:Number, _arg2:Number, _arg3:int=0){ this.shape = _arg3; this.fillAlpha = _arg2; this.fillColor = _arg1; } public function updateRenderRect(_arg1:Particle):void{ var _local2:Rectangle; _local2 = _arg1.renderRect; if (_arg1.size == 0){ _local2.width = 1; _local2.height = 1; } else { _local2.width = (_arg1.renderScale * _arg1.size); _local2.height = (_arg1.renderScale * _arg1.size); }; _local2.x = (_arg1.vertex3D.vertex3DInstance.x - (_local2.width / 2)); _local2.y = (_arg1.vertex3D.vertex3DInstance.y - (_local2.width / 2)); } public function drawParticle(_arg1:Particle, _arg2:Graphics, _arg3:RenderSessionData):void{ var _local4:Rectangle; _arg2.beginFill(fillColor, fillAlpha); _local4 = _arg1.renderRect; if (shape == SHAPE_SQUARE){ _arg2.drawRect(_local4.x, _local4.y, _local4.width, _local4.height); } else { if (shape == SHAPE_CIRCLE){ _arg2.drawCircle((_local4.x + (_local4.width / 2)), (_local4.y + (_local4.width / 2)), (_local4.width / 2)); } else { trace("warning - Particle material has no valid shape - Must be ParticleMaterial.SHAPE_SQUARE or ParticleMaterial.SHAPE_CIRCLE"); }; }; _arg2.endFill(); _arg3.renderStatistics.particles++; } } }//package org.papervision3d.materials.special
Section 93
//MaterialsList (org.papervision3d.materials.utils.MaterialsList) package org.papervision3d.materials.utils { import org.papervision3d.core.proto.*; import flash.utils.*; public class MaterialsList { protected var _materials:Dictionary; public var materialsByName:Dictionary; private var _materialsTotal:int; public function MaterialsList(_arg1=null):void{ var _local2:String; var _local3:String; super(); this.materialsByName = new Dictionary(true); this._materials = new Dictionary(false); this._materialsTotal = 0; if (_arg1){ if ((_arg1 is Array)){ for (_local2 in _arg1) { this.addMaterial(_arg1[_local2]); }; } else { if ((_arg1 is Object)){ for (_local3 in _arg1) { this.addMaterial(_arg1[_local3], _local3); }; }; }; }; } public function get numMaterials():int{ return (_materialsTotal); } public function addMaterial(_arg1:MaterialObject3D, _arg2:String=null):MaterialObject3D{ _arg2 = ((((_arg2) || (_arg1.name))) || (String(_arg1.id))); this._materials[_arg1] = _arg2; this.materialsByName[_arg2] = _arg1; this._materialsTotal++; return (_arg1); } public function removeMaterial(_arg1:MaterialObject3D):MaterialObject3D{ delete this.materialsByName[this._materials[_arg1]]; delete this._materials[_arg1]; return (_arg1); } public function toString():String{ var _local1:String; var _local2:MaterialObject3D; _local1 = ""; for each (_local2 in this.materialsByName) { _local1 = (_local1 + (this._materials[_local2] + "\n")); }; return (_local1); } public function removeMaterialByName(_arg1:String):MaterialObject3D{ return (removeMaterial(getMaterialByName(_arg1))); } public function clone():MaterialsList{ var _local1:MaterialsList; var _local2:MaterialObject3D; _local1 = new MaterialsList(); for each (_local2 in this.materialsByName) { _local1.addMaterial(_local2.clone(), this._materials[_local2]); }; return (_local1); } public function getMaterialByName(_arg1:String):MaterialObject3D{ return ((this.materialsByName[_arg1]) ? this.materialsByName[_arg1] : this.materialsByName["all"]); } } }//package org.papervision3d.materials.utils
Section 94
//RenderRecStorage (org.papervision3d.materials.utils.RenderRecStorage) package org.papervision3d.materials.utils { import org.papervision3d.core.geom.renderables.*; import flash.geom.*; public class RenderRecStorage { public var mat:Matrix; public var v0:Vertex3DInstance; public var v1:Vertex3DInstance; public var v2:Vertex3DInstance; public function RenderRecStorage(){ v0 = new Vertex3DInstance(); v1 = new Vertex3DInstance(); v2 = new Vertex3DInstance(); mat = new Matrix(); super(); } } }//package org.papervision3d.materials.utils
Section 95
//BitmapFileMaterial (org.papervision3d.materials.BitmapFileMaterial) package org.papervision3d.materials { import org.papervision3d.core.proto.*; import org.papervision3d.core.geom.renderables.*; import flash.display.*; import flash.events.*; import org.papervision3d.core.render.data.*; import flash.geom.*; import org.papervision3d.events.*; import flash.utils.*; import org.papervision3d.core.render.draw.*; import org.papervision3d.*; import flash.net.*; public class BitmapFileMaterial extends BitmapMaterial implements ITriangleDrawer { public var loaded:Boolean; private var errorLoading:Boolean;// = false public var url:String;// = "" public static var LOADING_COLOR:int = MaterialObject3D.DEFAULT_COLOR; public static var callback:Function; private static var _loadedBitmaps:Object = new Object(); private static var _loadingIdle:Boolean = true; private static var _waitingBitmaps:Array = new Array(); private static var _subscribedMaterials:Object = new Object(); public static var ERROR_COLOR:int = MaterialObject3D.DEBUG_COLOR; private static var _loaderUrls:Dictionary = new Dictionary(); public function BitmapFileMaterial(_arg1:String="", _arg2:Boolean=false){ url = ""; errorLoading = false; super(null, _arg2); this.url = _arg1; this.loaded = false; this.fillAlpha = 1; this.fillColor = LOADING_COLOR; if (_arg1.length > 0){ texture = _arg1; }; } override public function get texture():Object{ return (this._texture); } private function loadComplete():void{ var _local1:FileLoadEvent; this.fillAlpha = 0; this.fillColor = 0; this.loaded = true; _local1 = new FileLoadEvent(FileLoadEvent.LOAD_COMPLETE, this.url); this.dispatchEvent(_local1); } override public function set texture(_arg1:Object):void{ if ((_arg1 is String) == false){ Papervision3D.log("Error: BitmapFileMaterial.texture requires a String for the texture"); return; }; bitmap = createBitmapFromURL(String(_arg1)); _texture = _arg1; } private function loadBitmapCompleteHandler(_arg1:Event):void{ var _local2:Loader; var _local3:Bitmap; var _local4:String; var _local5:BitmapData; var _local6:BitmapFileMaterial; _local2 = Loader(_arg1.target.loader); _local3 = Bitmap(_local2.content); _local4 = _loaderUrls[_local2]; _local5 = super.createBitmap(_local3.bitmapData); for each (_local6 in _subscribedMaterials[_local4]) { _local6.bitmap = _local5; _local6.maxU = this.maxU; _local6.maxV = this.maxV; _local6.resetMapping(); _local6.loadComplete(); }; _loadedBitmaps[_local4] = _local5; _waitingBitmaps.shift(); if (_waitingBitmaps.length > 0){ loadNextBitmap(); } else { _loadingIdle = true; if (Boolean(callback)){ callback(); }; }; } override public function drawTriangle(_arg1:Triangle3D, _arg2:Graphics, _arg3:RenderSessionData, _arg4:BitmapData=null, _arg5:Matrix=null):void{ if ((((bitmap == null)) || (errorLoading))){ if (errorLoading){ _arg2.lineStyle(lineThickness, lineColor, lineAlpha); }; _arg2.beginFill(fillColor, fillAlpha); _arg2.moveTo(_arg1.v0.vertex3DInstance.x, _arg1.v0.vertex3DInstance.y); _arg2.lineTo(_arg1.v1.vertex3DInstance.x, _arg1.v1.vertex3DInstance.y); _arg2.lineTo(_arg1.v2.vertex3DInstance.x, _arg1.v2.vertex3DInstance.y); _arg2.lineTo(_arg1.v0.vertex3DInstance.x, _arg1.v0.vertex3DInstance.y); _arg2.endFill(); if (errorLoading){ _arg2.lineStyle(); }; _arg3.renderStatistics.triangles++; }; super.drawTriangle(_arg1, _arg2, _arg3); } private function loadNextBitmap():void{ var file:String; var request:URLRequest; var bitmapLoader:Loader; file = _waitingBitmaps[0]; request = new URLRequest(file); bitmapLoader = new Loader(); bitmapLoader.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS, loadBitmapProgressHandler); bitmapLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, loadBitmapCompleteHandler); bitmapLoader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, loadBitmapErrorHandler); try { bitmapLoader.load(request); _loaderUrls[bitmapLoader] = file; _loadingIdle = false; Papervision3D.log(("BitmapFileMaterial: Loading bitmap from " + file)); } catch(error:Error) { _waitingBitmaps.shift(); _loadingIdle = true; Papervision3D.log(("[ERROR] BitmapFileMaterial: Unable to load file " + error.message)); }; } private function loadBitmapErrorHandler(_arg1:IOErrorEvent):void{ var _local2:String; var _local3:FileLoadEvent; _local2 = String(_waitingBitmaps.shift()); _loadedBitmaps[_local2] = null; _subscribedMaterials[_local2] = null; this.errorLoading = true; this.lineColor = ERROR_COLOR; this.lineAlpha = 1; this.lineThickness = 1; if (_waitingBitmaps.length > 0){ loadNextBitmap(); } else { _loadingIdle = true; if (Boolean(callback)){ callback(); }; }; _local3 = new FileLoadEvent(FileLoadEvent.LOAD_ERROR, _local2, -1, -1, _arg1.text); dispatchEvent(_local3); } private function queueBitmap(_arg1:String):void{ if (!_subscribedMaterials[_arg1]){ _waitingBitmaps.push(_arg1); _subscribedMaterials[_arg1] = new Array(); }; _subscribedMaterials[_arg1].push(this); if (_loadingIdle){ loadNextBitmap(); }; } protected function createBitmapFromURL(_arg1:String):BitmapData{ var _local2:BitmapData; if (_arg1 == ""){ return (null); }; if (_loadedBitmaps[_arg1]){ _local2 = _loadedBitmaps[_arg1]; bitmap = super.createBitmap(_local2); this.loadComplete(); return (_local2); }; queueBitmap(_arg1); return (null); } private function loadBitmapProgressHandler(_arg1:ProgressEvent):void{ var _local2:FileLoadEvent; _local2 = new FileLoadEvent(FileLoadEvent.LOAD_PROGRESS, url, _arg1.bytesLoaded, _arg1.bytesTotal); dispatchEvent(_local2); } } }//package org.papervision3d.materials
Section 96
//BitmapMaterial (org.papervision3d.materials.BitmapMaterial) package org.papervision3d.materials { import org.papervision3d.core.proto.*; import org.papervision3d.materials.utils.*; import org.papervision3d.core.geom.renderables.*; import flash.display.*; import org.papervision3d.core.render.data.*; import flash.geom.*; import flash.utils.*; import org.papervision3d.core.render.draw.*; import org.papervision3d.*; import org.papervision3d.core.math.util.*; import org.papervision3d.core.material.*; public class BitmapMaterial extends TriangleMaterial implements ITriangleDrawer { protected var renderRecStorage:Array; protected var mabz:Number; protected var dcay:Number; protected var dsab:Number; protected var tempTriangleMatrix:Matrix; protected var dsbc:Number; private var b2:Number; protected var _precise:Boolean; protected var faz:Number; public var uvMatrices:Dictionary; protected var dsca:Number; protected var ax:Number; protected var az:Number; protected var ay:Number; protected var mcay:Number; protected var bx:Number; protected var by:Number; protected var bz:Number; protected var fbz:Number; protected var fcz:Number; public var minimumRenderSize:Number;// = 4 protected var mcaz:Number; private var c2:Number; protected var mcax:Number; protected var dbcx:Number; protected var cx:Number; protected var cy:Number; protected var cz:Number; private var d2:Number; protected var dbcy:Number; protected var dabx:Number; protected var _perPixelPrecision:int;// = 8 protected var daby:Number; private var x0:Number; private var x1:Number; private var x2:Number; protected var mbcy:Number; protected var mbcz:Number; private var y0:Number; private var y1:Number; private var y2:Number; protected var _texture:Object; protected var focus:Number;// = 200 protected var maby:Number; protected var mabx:Number; protected var dcax:Number; protected var mbcx:Number; private var a2:Number; protected var _precision:int;// = 8 protected static const DEFAULT_FOCUS:Number = 200; protected static var _triMatrix:Matrix = new Matrix(); protected static var _triMap:Matrix; public static var AUTO_MIP_MAPPING:Boolean = false; public static var MIP_MAP_DEPTH:Number = 8; protected static var hitRect:Rectangle = new Rectangle(); protected static var _localMatrix:Matrix = new Matrix(); public function BitmapMaterial(_arg1:BitmapData=null, _arg2:Boolean=false){ focus = 200; _precision = 8; _perPixelPrecision = 8; minimumRenderSize = 4; uvMatrices = new Dictionary(); tempTriangleMatrix = new Matrix(); super(); if (_arg1){ texture = _arg1; }; this.precise = _arg2; createRenderRecStorage(); } public function transformUV(_arg1:Triangle3D):Matrix{ var _local2:Array; 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:Matrix; var _local16:Matrix; if (!_arg1.uv){ Papervision3D.log("MaterialObject3D: transformUV() uv not found!"); } else { if (bitmap){ _local2 = _arg1.uv; _local3 = (bitmap.width * maxU); _local4 = (bitmap.height * maxV); _local5 = (_local3 * _arg1.uv0.u); _local6 = (_local4 * (1 - _arg1.uv0.v)); _local7 = (_local3 * _arg1.uv1.u); _local8 = (_local4 * (1 - _arg1.uv1.v)); _local9 = (_local3 * _arg1.uv2.u); _local10 = (_local4 * (1 - _arg1.uv2.v)); if ((((((_local5 == _local7)) && ((_local6 == _local8)))) || ((((_local5 == _local9)) && ((_local6 == _local10)))))){ _local5 = (_local5 - ((_local5)>0.05) ? 0.05 : -0.05); _local6 = (_local6 - ((_local6)>0.07) ? 0.07 : -0.07); }; if ((((_local9 == _local7)) && ((_local10 == _local8)))){ _local9 = (_local9 - ((_local9)>0.05) ? 0.04 : -0.04); _local10 = (_local10 - ((_local10)>0.06) ? 0.06 : -0.06); }; _local11 = (_local7 - _local5); _local12 = (_local8 - _local6); _local13 = (_local9 - _local5); _local14 = (_local10 - _local6); _local15 = new Matrix(_local11, _local12, _local13, _local14, _local5, _local6); if (Papervision3D.useRIGHTHANDED){ _local15.scale(-1, 1); _local15.translate(_local3, 0); }; _local15.invert(); _local16 = (uvMatrices[_arg1]) ? uvMatrices[_arg1] : uvMatrices[_arg1] = _local15.clone(); _local16.a = _local15.a; _local16.b = _local15.b; _local16.c = _local15.c; _local16.d = _local15.d; _local16.tx = _local15.tx; _local16.ty = _local15.ty; } else { Papervision3D.log("MaterialObject3D: transformUV() material.bitmap not found!"); }; }; return (_local16); } protected function renderRec(_arg1:Graphics, _arg2:Matrix, _arg3:Vertex3DInstance, _arg4:Vertex3DInstance, _arg5:Vertex3DInstance, _arg6:Number, _arg7:RenderSessionData, _arg8:BitmapData):void{ var _local9:int; var _local10:RenderRecStorage; var _local11:Matrix; var _local12:Number; az = _arg3.z; bz = _arg4.z; cz = _arg5.z; if ((((((az <= 0)) && ((bz <= 0)))) && ((cz <= 0)))){ return; }; cx = _arg5.x; cy = _arg5.y; bx = _arg4.x; by = _arg4.y; ax = _arg3.x; ay = _arg3.y; if (_arg7.viewPort.cullingRectangle){ hitRect.x = Math.min(cx, Math.min(bx, ax)); hitRect.width = (Math.max(cx, Math.max(bx, ax)) + Math.abs(hitRect.x)); hitRect.y = Math.min(cy, Math.min(by, ay)); hitRect.height = (Math.max(cy, Math.max(by, ay)) + Math.abs(hitRect.y)); if (!FastRectangleTools.intersects(hitRect, _arg7.viewPort.cullingRectangle)){ return; }; }; if ((((((((_arg6 >= 100)) || ((hitRect.width < minimumRenderSize)))) || ((hitRect.height < minimumRenderSize)))) || ((focus == Infinity)))){ renderTriangleBitmap(_arg1, _arg2, _arg3, _arg4, _arg5, smooth, tiled, _arg8); _arg7.renderStatistics.triangles++; return; }; faz = (focus + az); fbz = (focus + bz); fcz = (focus + cz); mabz = (2 / (faz + fbz)); mbcz = (2 / (fbz + fcz)); mcaz = (2 / (fcz + faz)); mabx = (((ax * faz) + (bx * fbz)) * mabz); maby = (((ay * faz) + (by * fbz)) * mabz); mbcx = (((bx * fbz) + (cx * fcz)) * mbcz); mbcy = (((by * fbz) + (cy * fcz)) * mbcz); mcax = (((cx * fcz) + (ax * faz)) * mcaz); mcay = (((cy * fcz) + (ay * faz)) * mcaz); dabx = ((ax + bx) - mabx); daby = ((ay + by) - maby); dbcx = ((bx + cx) - mbcx); dbcy = ((by + cy) - mbcy); dcax = ((cx + ax) - mcax); dcay = ((cy + ay) - mcay); dsab = ((dabx * dabx) + (daby * daby)); dsbc = ((dbcx * dbcx) + (dbcy * dbcy)); dsca = ((dcax * dcax) + (dcay * dcay)); _local9 = (_arg6 + 1); _local10 = RenderRecStorage(renderRecStorage[int(_arg6)]); _local11 = _local10.mat; if ((((((dsab <= _precision)) && ((dsca <= _precision)))) && ((dsbc <= _precision)))){ renderTriangleBitmap(_arg1, _arg2, _arg3, _arg4, _arg5, smooth, tiled, _arg8); _arg7.renderStatistics.triangles++; return; }; if ((((((dsab > _precision)) && ((dsca > _precision)))) && ((dsbc > _precision)))){ _local11.a = (_arg2.a * 2); _local11.b = (_arg2.b * 2); _local11.c = (_arg2.c * 2); _local11.d = (_arg2.d * 2); _local11.tx = (_arg2.tx * 2); _local11.ty = (_arg2.ty * 2); _local10.v0.x = (mabx * 0.5); _local10.v0.y = (maby * 0.5); _local10.v0.z = ((az + bz) * 0.5); _local10.v1.x = (mbcx * 0.5); _local10.v1.y = (mbcy * 0.5); _local10.v1.z = ((bz + cz) * 0.5); _local10.v2.x = (mcax * 0.5); _local10.v2.y = (mcay * 0.5); _local10.v2.z = ((cz + az) * 0.5); renderRec(_arg1, _local11, _arg3, _local10.v0, _local10.v2, _local9, _arg7, _arg8); _local11.tx = (_local11.tx - 1); renderRec(_arg1, _local11, _local10.v0, _arg4, _local10.v1, _local9, _arg7, _arg8); _local11.ty = (_local11.ty - 1); _local11.tx = (_arg2.tx * 2); renderRec(_arg1, _local11, _local10.v2, _local10.v1, _arg5, _local9, _arg7, _arg8); _local11.a = (-(_arg2.a) * 2); _local11.b = (-(_arg2.b) * 2); _local11.c = (-(_arg2.c) * 2); _local11.d = (-(_arg2.d) * 2); _local11.tx = ((-(_arg2.tx) * 2) + 1); _local11.ty = ((-(_arg2.ty) * 2) + 1); renderRec(_arg1, _local11, _local10.v1, _local10.v2, _local10.v0, _local9, _arg7, _arg8); return; }; _local12 = Math.max(dsab, Math.max(dsca, dsbc)); if (dsab == _local12){ _local11.a = (_arg2.a * 2); _local11.b = _arg2.b; _local11.c = (_arg2.c * 2); _local11.d = _arg2.d; _local11.tx = (_arg2.tx * 2); _local11.ty = _arg2.ty; _local10.v0.x = (mabx * 0.5); _local10.v0.y = (maby * 0.5); _local10.v0.z = ((az + bz) * 0.5); renderRec(_arg1, _local11, _arg3, _local10.v0, _arg5, _local9, _arg7, _arg8); _local11.a = ((_arg2.a * 2) + _arg2.b); _local11.c = ((2 * _arg2.c) + _arg2.d); _local11.tx = (((_arg2.tx * 2) + _arg2.ty) - 1); renderRec(_arg1, _local11, _local10.v0, _arg4, _arg5, _local9, _arg7, _arg8); return; }; if (dsca == _local12){ _local11.a = _arg2.a; _local11.b = (_arg2.b * 2); _local11.c = _arg2.c; _local11.d = (_arg2.d * 2); _local11.tx = _arg2.tx; _local11.ty = (_arg2.ty * 2); _local10.v2.x = (mcax * 0.5); _local10.v2.y = (mcay * 0.5); _local10.v2.z = ((cz + az) * 0.5); renderRec(_arg1, _local11, _arg3, _arg4, _local10.v2, _local9, _arg7, _arg8); _local11.b = (_local11.b + _arg2.a); _local11.d = (_local11.d + _arg2.c); _local11.ty = (_local11.ty + (_arg2.tx - 1)); renderRec(_arg1, _local11, _local10.v2, _arg4, _arg5, _local9, _arg7, _arg8); return; }; _local11.a = (_arg2.a - _arg2.b); _local11.b = (_arg2.b * 2); _local11.c = (_arg2.c - _arg2.d); _local11.d = (_arg2.d * 2); _local11.tx = (_arg2.tx - _arg2.ty); _local11.ty = (_arg2.ty * 2); _local10.v1.x = (mbcx * 0.5); _local10.v1.y = (mbcy * 0.5); _local10.v1.z = ((bz + cz) * 0.5); renderRec(_arg1, _local11, _arg3, _arg4, _local10.v1, _local9, _arg7, _arg8); _local11.a = (_arg2.a * 2); _local11.b = (_arg2.b - _arg2.a); _local11.c = (_arg2.c * 2); _local11.d = (_arg2.d - _arg2.c); _local11.tx = (_arg2.tx * 2); _local11.ty = (_arg2.ty - _arg2.tx); renderRec(_arg1, _local11, _arg3, _local10.v1, _arg5, _local9, _arg7, _arg8); } protected function createRenderRecStorage():void{ var _local1:int; this.renderRecStorage = new Array(); _local1 = 0; while (_local1 <= 100) { this.renderRecStorage[_local1] = new RenderRecStorage(); _local1++; }; } public function resetUVS():void{ uvMatrices = new Dictionary(false); } public function get texture():Object{ return (this._texture); } public function set pixelPrecision(_arg1:int):void{ _precision = ((_arg1 * _arg1) * 1.4); _perPixelPrecision = _arg1; } protected function correctBitmap(_arg1:BitmapData):BitmapData{ var _local2:BitmapData; var _local3:Number; var _local4:Number; var _local5:Number; var _local6:Number; var _local7:Number; var _local8:Boolean; _local3 = (1 << MIP_MAP_DEPTH); _local4 = (_arg1.width / _local3); _local4 = ((_local4 == uint(_local4))) ? _local4 : (uint(_local4) + 1); _local5 = (_arg1.height / _local3); _local5 = ((_local5 == uint(_local5))) ? _local5 : (uint(_local5) + 1); _local6 = (_local3 * _local4); _local7 = (_local3 * _local5); _local8 = true; if (_local6 > 2880){ _local6 = _arg1.width; _local8 = false; }; if (_local7 > 2880){ _local7 = _arg1.height; _local8 = false; }; if (!_local8){ Papervision3D.log((("Material " + this.name) + ": Texture too big for mip mapping. Resizing recommended for better performance and quality.")); }; if (((_arg1) && (((!(((_arg1.width % _local3) == 0))) || (!(((_arg1.height % _local3) == 0))))))){ _local2 = new BitmapData(_local6, _local7, _arg1.transparent, 0); widthOffset = _arg1.width; heightOffset = _arg1.height; this.maxU = (_arg1.width / _local6); this.maxV = (_arg1.height / _local7); _local2.draw(_arg1); extendBitmapEdges(_local2, _arg1.width, _arg1.height); } else { this.maxU = (this.maxV = 1); _local2 = _arg1; }; return (_local2); } protected function createBitmap(_arg1:BitmapData):BitmapData{ var _local2:BitmapData; resetMapping(); if (AUTO_MIP_MAPPING){ _local2 = correctBitmap(_arg1); } else { this.maxU = (this.maxV = 1); _local2 = _arg1; }; return (_local2); } public function get precise():Boolean{ return (_precise); } override public function clone():MaterialObject3D{ var _local1:MaterialObject3D; _local1 = super.clone(); _local1.maxU = this.maxU; _local1.maxV = this.maxV; return (_local1); } public function set texture(_arg1:Object):void{ if ((_arg1 is BitmapData) == false){ Papervision3D.log("Error: BitmapMaterial.texture requires a BitmapData object for the texture"); return; }; bitmap = createBitmap(BitmapData(_arg1)); _texture = _arg1; } override public function toString():String{ return (((((("Texture:" + this.texture) + " lineColor:") + this.lineColor) + " lineAlpha:") + this.lineAlpha)); } override public function copy(_arg1:MaterialObject3D):void{ super.copy(_arg1); this.maxU = _arg1.maxU; this.maxV = _arg1.maxV; } override public function drawTriangle(_arg1:Triangle3D, _arg2:Graphics, _arg3:RenderSessionData, _arg4:BitmapData=null, _arg5:Matrix=null):void{ if (!_precise){ if (lineAlpha){ _arg2.lineStyle(lineThickness, lineColor, lineAlpha); }; if (bitmap){ _triMap = (_arg5) ? _arg5 : ((uvMatrices[_arg1]) || (transformUV(_arg1))); x0 = _arg1.v0.vertex3DInstance.x; y0 = _arg1.v0.vertex3DInstance.y; x1 = _arg1.v1.vertex3DInstance.x; y1 = _arg1.v1.vertex3DInstance.y; x2 = _arg1.v2.vertex3DInstance.x; y2 = _arg1.v2.vertex3DInstance.y; _triMatrix.a = (x1 - x0); _triMatrix.b = (y1 - y0); _triMatrix.c = (x2 - x0); _triMatrix.d = (y2 - y0); _triMatrix.tx = x0; _triMatrix.ty = y0; _localMatrix.a = _triMap.a; _localMatrix.b = _triMap.b; _localMatrix.c = _triMap.c; _localMatrix.d = _triMap.d; _localMatrix.tx = _triMap.tx; _localMatrix.ty = _triMap.ty; _localMatrix.concat(_triMatrix); _arg2.beginBitmapFill((_arg4) ? _arg4 : bitmap, _localMatrix, tiled, smooth); }; _arg2.moveTo(x0, y0); _arg2.lineTo(x1, y1); _arg2.lineTo(x2, y2); _arg2.lineTo(x0, y0); if (bitmap){ _arg2.endFill(); }; if (lineAlpha){ _arg2.lineStyle(); }; _arg3.renderStatistics.triangles++; } else { _triMap = (_arg5) ? _arg5 : ((uvMatrices[_arg1]) || (transformUV(_arg1))); focus = _arg3.camera.focus; renderRec(_arg2, _triMap, _arg1.v0.vertex3DInstance, _arg1.v1.vertex3DInstance, _arg1.v2.vertex3DInstance, 0, _arg3, (_arg4) ? _arg4 : bitmap); }; } public function resetMapping():void{ uvMatrices = new Dictionary(); } public function get precision():int{ return (_precision); } public function get pixelPrecision():int{ return (_perPixelPrecision); } public function renderTriangleBitmap(_arg1:Graphics, _arg2:Matrix, _arg3:Vertex3DInstance, _arg4:Vertex3DInstance, _arg5:Vertex3DInstance, _arg6:Boolean, _arg7:Boolean, _arg8:BitmapData):void{ a2 = (_arg4.x - _arg3.x); b2 = (_arg4.y - _arg3.y); c2 = (_arg5.x - _arg3.x); d2 = (_arg5.y - _arg3.y); tempTriangleMatrix.a = ((_arg2.a * a2) + (_arg2.b * c2)); tempTriangleMatrix.b = ((_arg2.a * b2) + (_arg2.b * d2)); tempTriangleMatrix.c = ((_arg2.c * a2) + (_arg2.d * c2)); tempTriangleMatrix.d = ((_arg2.c * b2) + (_arg2.d * d2)); tempTriangleMatrix.tx = (((_arg2.tx * a2) + (_arg2.ty * c2)) + _arg3.x); tempTriangleMatrix.ty = (((_arg2.tx * b2) + (_arg2.ty * d2)) + _arg3.y); _arg1.beginBitmapFill(_arg8, tempTriangleMatrix, _arg7, _arg6); _arg1.moveTo(_arg3.x, _arg3.y); _arg1.lineTo(_arg4.x, _arg4.y); _arg1.lineTo(_arg5.x, _arg5.y); _arg1.endFill(); } public function set precise(_arg1:Boolean):void{ _precise = _arg1; } protected function extendBitmapEdges(_arg1:BitmapData, _arg2:Number, _arg3:Number):void{ var _local4:Rectangle; var _local5:Point; var _local6:int; _local4 = new Rectangle(); _local5 = new Point(); if (_arg1.width > _arg2){ _local4.x = (_arg2 - 1); _local4.y = 0; _local4.width = 1; _local4.height = _arg3; _local5.y = 0; _local6 = _arg2; while (_local6 < _arg1.width) { _local5.x = _local6; _arg1.copyPixels(_arg1, _local4, _local5); _local6++; }; }; if (_arg1.height > _arg3){ _local4.x = 0; _local4.y = (_arg3 - 1); _local4.width = _arg1.width; _local4.height = 1; _local5.x = 0; _local6 = _arg3; while (_local6 < _arg1.height) { _local5.y = _local6; _arg1.copyPixels(_arg1, _local4, _local5); _local6++; }; }; } override public function destroy():void{ super.destroy(); if (uvMatrices){ uvMatrices = null; }; if (bitmap){ bitmap.dispose(); }; this.renderRecStorage = null; } public function set precision(_arg1:int):void{ _precision = _arg1; } } }//package org.papervision3d.materials
Section 97
//MovieMaterial (org.papervision3d.materials.MovieMaterial) package org.papervision3d.materials { import flash.display.*; import org.papervision3d.core.render.data.*; import flash.geom.*; import org.papervision3d.core.render.material.*; import org.papervision3d.core.render.draw.*; import org.papervision3d.*; public class MovieMaterial extends BitmapMaterial implements ITriangleDrawer, IUpdateBeforeMaterial { public var movieTransparent:Boolean; private var quality:String; private var movieAnimated:Boolean; private var autoClipRect:Rectangle; private var stage:Stage; public var movie:DisplayObject; public var allowAutoResize:Boolean;// = true private var userClipRect:Rectangle; public function MovieMaterial(_arg1:DisplayObject=null, _arg2:Boolean=false, _arg3:Boolean=false, _arg4:Boolean=false, _arg5:Rectangle=null){ allowAutoResize = true; super(); movieTransparent = _arg2; this.animated = _arg3; this.precise = _arg4; userClipRect = _arg5; if (_arg1){ texture = _arg1; }; } public function get rect():Rectangle{ var _local1:Rectangle; _local1 = ((userClipRect) || (autoClipRect)); if (((!(_local1)) && (movie))){ _local1 = movie.getBounds(movie); }; return (_local1); } public function drawBitmap():void{ var _local1:Rectangle; var _local2:Matrix; var _local3:String; bitmap.fillRect(bitmap.rect, fillColor); if (((stage) && (quality))){ _local3 = stage.quality; stage.quality = quality; }; _local1 = rect; _local2 = new Matrix(1, 0, 0, 1, -(_local1.x), -(_local1.y)); bitmap.draw(movie, _local2, movie.transform.colorTransform, null); if (!userClipRect){ autoClipRect = movie.getBounds(movie); }; if (((stage) && (quality))){ stage.quality = _local3; }; } override public function get texture():Object{ return (this._texture); } public function set animated(_arg1:Boolean):void{ movieAnimated = _arg1; } public function setQuality(_arg1:String, _arg2:Stage, _arg3:Boolean=true):void{ this.quality = _arg1; this.stage = _arg2; if (_arg3){ createBitmapFromSprite(movie); }; } override public function set texture(_arg1:Object):void{ if ((_arg1 is DisplayObject) == false){ Papervision3D.log("Error: MovieMaterial.texture requires a Sprite to be passed as the object"); return; }; bitmap = createBitmapFromSprite(DisplayObject(_arg1)); _texture = _arg1; } protected function initBitmap(_arg1:DisplayObject):void{ if (bitmap){ bitmap.dispose(); }; if (userClipRect){ bitmap = new BitmapData(int((userClipRect.width + 0.5)), int((userClipRect.height + 0.5)), movieTransparent, fillColor); } else { if ((((_arg1.width == 0)) || ((_arg1.height == 0)))){ bitmap = new BitmapData(0x0100, 0x0100, movieTransparent, fillColor); } else { bitmap = new BitmapData(int((_arg1.width + 0.5)), int((_arg1.height + 0.5)), movieTransparent, fillColor); }; }; } public function updateBeforeRender(_arg1:RenderSessionData):void{ var _local2:int; var _local3:int; var _local4:Boolean; if (movieAnimated){ if (userClipRect){ _local2 = int((userClipRect.width + 0.5)); _local3 = int((userClipRect.height + 0.5)); } else { _local2 = int((movie.width + 0.5)); _local3 = int((movie.height + 0.5)); }; if (((allowAutoResize) && (((!((_local2 == bitmap.width))) || (!((_local3 == bitmap.height))))))){ initBitmap(movie); _local4 = true; }; drawBitmap(); if (_local4){ bitmap = super.createBitmap(bitmap); }; }; } public function get animated():Boolean{ return (movieAnimated); } public function set rect(_arg1:Rectangle):void{ userClipRect = _arg1; createBitmapFromSprite(movie); } protected function createBitmapFromSprite(_arg1:DisplayObject):BitmapData{ movie = _arg1; initBitmap(movie); drawBitmap(); bitmap = super.createBitmap(bitmap); return (bitmap); } } }//package org.papervision3d.materials
Section 98
//WireframeMaterial (org.papervision3d.materials.WireframeMaterial) package org.papervision3d.materials { import org.papervision3d.core.geom.renderables.*; import flash.display.*; import org.papervision3d.core.render.data.*; import flash.geom.*; import org.papervision3d.core.render.draw.*; import org.papervision3d.core.material.*; public class WireframeMaterial extends TriangleMaterial implements ITriangleDrawer { public function WireframeMaterial(_arg1:Number=0xFF00FF, _arg2:Number=100, _arg3:Number=0){ this.lineColor = _arg1; this.lineAlpha = _arg2; this.lineThickness = _arg3; this.doubleSided = false; } override public function toString():String{ return (((("WireframeMaterial - color:" + this.lineColor) + " alpha:") + this.lineAlpha)); } override public function drawTriangle(_arg1:Triangle3D, _arg2:Graphics, _arg3:RenderSessionData, _arg4:BitmapData=null, _arg5:Matrix=null):void{ var _local6:Number; var _local7:Number; _local6 = _arg1.v0.vertex3DInstance.x; _local7 = _arg1.v0.vertex3DInstance.y; if (lineAlpha){ _arg2.lineStyle(lineThickness, lineColor, lineAlpha); _arg2.moveTo(_local6, _local7); _arg2.lineTo(_arg1.v1.vertex3DInstance.x, _arg1.v1.vertex3DInstance.y); _arg2.lineTo(_arg1.v2.vertex3DInstance.x, _arg1.v2.vertex3DInstance.y); _arg2.lineTo(_local6, _local7); _arg2.lineStyle(); _arg3.renderStatistics.triangles++; }; } } }//package org.papervision3d.materials
Section 99
//Cube (org.papervision3d.objects.primitives.Cube) package org.papervision3d.objects.primitives { import org.papervision3d.core.math.*; import org.papervision3d.core.proto.*; import org.papervision3d.materials.utils.*; import org.papervision3d.core.geom.renderables.*; import org.papervision3d.core.geom.*; import org.papervision3d.*; public class Cube extends TriangleMesh3D { private var insideFaces:int; public var segments:Number3D; private var excludeFaces:int; public static var ALL:int = (((((FRONT + BACK) + RIGHT) + LEFT) + TOP) + BOTTOM); public static var LEFT:int = 8; public static var FRONT:int = 1; public static var BOTTOM:int = 32; public static var TOP:int = 16; public static var BACK:int = 2; public static var NONE:int = 0; public static var RIGHT:int = 4; public function Cube(_arg1:MaterialsList, _arg2:Number=500, _arg3:Number=500, _arg4:Number=500, _arg5:int=1, _arg6:int=1, _arg7:int=1, _arg8:int=0, _arg9:int=0){ super(_arg1.getMaterialByName("all"), new Array(), new Array(), null); this.materials = _arg1; this.insideFaces = _arg8; this.excludeFaces = _arg9; segments = new Number3D(_arg5, _arg6, _arg7); buildCube(_arg2, _arg4, _arg3); } private function buildPlane(_arg1:String, _arg2:String, _arg3:String, _arg4:Number, _arg5:Number, _arg6:Number, _arg7:Boolean=false):void{ var _local8:MaterialObject3D; var _local9:String; var _local10:Number; var _local11:Number; var _local12:Number; var _local13:Number; var _local14:Number; var _local15:Array; var _local16:Array; var _local17:Array; var _local18:Number; var _local19:Number; var _local20:Number; var _local21:Number; var _local22:int; var _local23:NumberUV; var _local24:NumberUV; var _local25:NumberUV; var _local26:int; var _local27:Vertex3D; var _local28:Vertex3D; var _local29:Vertex3D; var _local30:Vertex3D; _local8 = materials.getMaterialByName(_arg1); if (!_local8){ _local8 = materials.getMaterialByName("all"); if (!_local8){ Papervision3D.log("Cube: Required material not found in given materials list. Supported materials are: front, back, right, left, top, bottom & all."); return; }; }; if ((((((_arg2 == "x")) && ((_arg3 == "y")))) || ((((_arg2 == "y")) && ((_arg3 == "x")))))){ _local9 = "z"; } else { if ((((((_arg2 == "x")) && ((_arg3 == "z")))) || ((((_arg2 == "z")) && ((_arg3 == "x")))))){ _local9 = "y"; } else { if ((((((_arg2 == "z")) && ((_arg3 == "y")))) || ((((_arg2 == "y")) && ((_arg3 == "z")))))){ _local9 = "x"; }; }; }; _local10 = (_arg7) ? -1 : 1; _local11 = this.segments[_arg2]; _local12 = this.segments[_arg3]; _local13 = (_local11 + 1); _local14 = (_local12 + 1); _local15 = this.geometry.vertices; _local16 = this.geometry.faces; _local17 = new Array(); _local18 = (_arg4 / 2); _local19 = (_arg5 / 2); _local20 = (_arg4 / _local11); _local21 = (_arg5 / _local12); _local22 = 0; while (_local22 < _local13) { _local26 = 0; while (_local26 < _local14) { _local27 = new Vertex3D(); _local27[_arg2] = (((_local22 * _local20) - _local18) * _local10); _local27[_arg3] = ((_local26 * _local21) - _local19); _local27[_local9] = _arg6; _local15.push(_local27); _local17.push(_local27); _local26++; }; _local22++; }; _local22 = 0; while (_local22 < _local11) { _local26 = 0; while (_local26 < _local12) { _local28 = _local17[((_local22 * _local14) + _local26)]; _local29 = _local17[((_local22 * _local14) + (_local26 + 1))]; _local30 = _local17[(((_local22 + 1) * _local14) + _local26)]; _local23 = new NumberUV((_local22 / _local11), (_local26 / _local12)); _local24 = new NumberUV((_local22 / _local11), ((_local26 + 1) / _local12)); _local25 = new NumberUV(((_local22 + 1) / _local11), (_local26 / _local12)); _local16.push(new Triangle3D(this, [_local28, _local30, _local29], _local8, [_local23, _local25, _local24])); _local28 = _local17[(((_local22 + 1) * _local14) + (_local26 + 1))]; _local29 = _local17[(((_local22 + 1) * _local14) + _local26)]; _local30 = _local17[((_local22 * _local14) + (_local26 + 1))]; _local23 = new NumberUV(((_local22 + 1) / _local11), ((_local26 + 1) / _local12)); _local24 = new NumberUV(((_local22 + 1) / _local11), (_local26 / _local12)); _local25 = new NumberUV((_local22 / _local11), ((_local26 + 1) / _local12)); _local16.push(new Triangle3D(this, [_local29, _local28, _local30], _local8, [_local24, _local23, _local25])); _local26++; }; _local22++; }; } private function buildCube(_arg1:Number, _arg2:Number, _arg3:Number):void{ var _local4:Number; var _local5:Number; var _local6:Number; _local4 = (_arg1 / 2); _local5 = (_arg2 / 2); _local6 = (_arg3 / 2); if (!(excludeFaces & FRONT)){ buildPlane("front", "x", "y", _arg1, _arg2, _local6, !(Boolean((insideFaces & FRONT)))); }; if (!(excludeFaces & BACK)){ buildPlane("back", "x", "y", _arg1, _arg2, -(_local6), Boolean((insideFaces & BACK))); }; if (!(excludeFaces & RIGHT)){ buildPlane("right", "z", "y", _arg3, _arg2, _local4, Boolean((insideFaces & RIGHT))); }; if (!(excludeFaces & LEFT)){ buildPlane("left", "z", "y", _arg3, _arg2, -(_local4), !(Boolean((insideFaces & LEFT)))); }; if (!(excludeFaces & TOP)){ buildPlane("top", "x", "z", _arg1, _arg3, _local5, Boolean((insideFaces & TOP))); }; if (!(excludeFaces & BOTTOM)){ buildPlane("bottom", "x", "z", _arg1, _arg3, -(_local5), !(Boolean((insideFaces & BOTTOM)))); }; mergeVertices(); this.geometry.ready = true; if (Papervision3D.useRIGHTHANDED){ this.geometry.flipFaces(); }; } } }//package org.papervision3d.objects.primitives
Section 100
//Plane (org.papervision3d.objects.primitives.Plane) package org.papervision3d.objects.primitives { import org.papervision3d.core.math.*; import org.papervision3d.core.proto.*; import org.papervision3d.core.geom.renderables.*; import org.papervision3d.core.geom.*; import org.papervision3d.*; public class Plane extends TriangleMesh3D { public var segmentsH:Number; public var segmentsW:Number; public static var DEFAULT_SCALE:Number = 1; public static var DEFAULT_SEGMENTS:Number = 1; public static var DEFAULT_SIZE:Number = 500; public function Plane(_arg1:MaterialObject3D=null, _arg2:Number=0, _arg3:Number=0, _arg4:Number=0, _arg5:Number=0){ var _local6:Number; super(_arg1, new Array(), new Array(), null); this.segmentsW = ((_arg4) || (DEFAULT_SEGMENTS)); this.segmentsH = ((_arg5) || (this.segmentsW)); _local6 = DEFAULT_SCALE; if (!_arg3){ if (_arg2){ _local6 = _arg2; }; if (((_arg1) && (_arg1.bitmap))){ _arg2 = (_arg1.bitmap.width * _local6); _arg3 = (_arg1.bitmap.height * _local6); } else { _arg2 = (DEFAULT_SIZE * _local6); _arg3 = (DEFAULT_SIZE * _local6); }; }; buildPlane(_arg2, _arg3); } private function buildPlane(_arg1:Number, _arg2:Number):void{ var _local3:Number; var _local4:Number; var _local5:Number; var _local6:Number; var _local7:Array; var _local8:Array; var _local9:Number; var _local10:Number; var _local11:Number; var _local12:Number; var _local13:int; var _local14:NumberUV; var _local15:NumberUV; var _local16:NumberUV; var _local17:int; var _local18:Number; var _local19:Number; var _local20:Vertex3D; var _local21:Vertex3D; var _local22:Vertex3D; _local3 = this.segmentsW; _local4 = this.segmentsH; _local5 = (_local3 + 1); _local6 = (_local4 + 1); _local7 = this.geometry.vertices; _local8 = this.geometry.faces; _local9 = (_arg1 / 2); _local10 = (_arg2 / 2); _local11 = (_arg1 / _local3); _local12 = (_arg2 / _local4); _local13 = 0; while (_local13 < (_local3 + 1)) { _local17 = 0; while (_local17 < _local6) { _local18 = ((_local13 * _local11) - _local9); _local19 = ((_local17 * _local12) - _local10); _local7.push(new Vertex3D(_local18, _local19, 0)); _local17++; }; _local13++; }; _local13 = 0; while (_local13 < _local3) { _local17 = 0; while (_local17 < _local4) { _local20 = _local7[((_local13 * _local6) + _local17)]; _local21 = _local7[((_local13 * _local6) + (_local17 + 1))]; _local22 = _local7[(((_local13 + 1) * _local6) + _local17)]; _local14 = new NumberUV((_local13 / _local3), (_local17 / _local4)); _local15 = new NumberUV((_local13 / _local3), ((_local17 + 1) / _local4)); _local16 = new NumberUV(((_local13 + 1) / _local3), (_local17 / _local4)); _local8.push(new Triangle3D(this, [_local20, _local22, _local21], material, [_local14, _local16, _local15])); _local20 = _local7[(((_local13 + 1) * _local6) + (_local17 + 1))]; _local21 = _local7[(((_local13 + 1) * _local6) + _local17)]; _local22 = _local7[((_local13 * _local6) + (_local17 + 1))]; _local14 = new NumberUV(((_local13 + 1) / _local3), ((_local17 + 1) / _local4)); _local15 = new NumberUV(((_local13 + 1) / _local3), (_local17 / _local4)); _local16 = new NumberUV((_local13 / _local3), ((_local17 + 1) / _local4)); _local8.push(new Triangle3D(this, [_local20, _local22, _local21], material, [_local14, _local16, _local15])); _local17++; }; _local13++; }; this.geometry.ready = true; if (Papervision3D.useRIGHTHANDED){ this.geometry.flipFaces(); }; } } }//package org.papervision3d.objects.primitives
Section 101
//Sphere (org.papervision3d.objects.primitives.Sphere) package org.papervision3d.objects.primitives { import org.papervision3d.core.math.*; import org.papervision3d.core.proto.*; import org.papervision3d.core.geom.renderables.*; import org.papervision3d.core.geom.*; import org.papervision3d.*; public class Sphere extends TriangleMesh3D { private var segmentsH:Number; private var segmentsW:Number; public static var MIN_SEGMENTSW:Number = 3; public static var DEFAULT_SCALE:Number = 1; public static var DEFAULT_RADIUS:Number = 100; public static var DEFAULT_SEGMENTSH:Number = 6; public static var MIN_SEGMENTSH:Number = 2; public static var DEFAULT_SEGMENTSW:Number = 8; public function Sphere(_arg1:MaterialObject3D=null, _arg2:Number=100, _arg3:int=8, _arg4:int=6){ var _local5:Number; super(_arg1, new Array(), new Array(), null); this.segmentsW = Math.max(MIN_SEGMENTSW, ((_arg3) || (DEFAULT_SEGMENTSW))); this.segmentsH = Math.max(MIN_SEGMENTSH, ((_arg4) || (DEFAULT_SEGMENTSH))); if (_arg2 == 0){ _arg2 = DEFAULT_RADIUS; }; _local5 = DEFAULT_SCALE; buildSphere(_arg2); } private function buildSphere(_arg1:Number):void{ var _local2:Number; var _local3:Number; var _local4:Number; var _local5:Number; var _local6:Number; var _local7:Array; var _local8:Array; var _local9:Array; var _local10:int; var _local11:Number; var _local12:Number; var _local13:Number; var _local14:Array; var _local15:Vertex3D; var _local16:Number; var _local17:Number; var _local18:Number; var _local19:int; var _local20:Boolean; var _local21:Vertex3D; var _local22:Vertex3D; var _local23:Vertex3D; var _local24:Vertex3D; var _local25:Number; var _local26:Number; var _local27:Number; var _local28:Number; var _local29:NumberUV; var _local30:NumberUV; var _local31:NumberUV; var _local32:NumberUV; _local5 = Math.max(3, this.segmentsW); _local6 = Math.max(2, this.segmentsH); _local7 = this.geometry.vertices; _local8 = this.geometry.faces; _local9 = new Array(); _local3 = 0; while (_local3 < (_local6 + 1)) { _local11 = Number((_local3 / _local6)); _local12 = (-(_arg1) * Math.cos((_local11 * Math.PI))); _local13 = (_arg1 * Math.sin((_local11 * Math.PI))); _local14 = new Array(); _local2 = 0; while (_local2 < _local5) { _local16 = Number(((2 * _local2) / _local5)); _local17 = (_local13 * Math.sin((_local16 * Math.PI))); _local18 = (_local13 * Math.cos((_local16 * Math.PI))); if (!(((((_local3 == 0)) || ((_local3 == _local6)))) && ((_local2 > 0)))){ _local15 = new Vertex3D(_local18, _local12, _local17); _local7.push(_local15); }; _local14.push(_local15); _local2++; }; _local9.push(_local14); _local3++; }; _local10 = _local9.length; _local3 = 0; while (_local3 < _local10) { _local19 = _local9[_local3].length; if (_local3 > 0){ _local2 = 0; while (_local2 < _local19) { _local20 = (_local2 == (_local19 - 0)); _local21 = _local9[_local3][(_local20) ? 0 : _local2]; _local22 = _local9[_local3][(((_local2 == 0)) ? _local19 : _local2 - 1)]; _local23 = _local9[(_local3 - 1)][(((_local2 == 0)) ? _local19 : _local2 - 1)]; _local24 = _local9[(_local3 - 1)][(_local20) ? 0 : _local2]; _local25 = (_local3 / (_local10 - 1)); _local26 = ((_local3 - 1) / (_local10 - 1)); _local27 = ((_local2 + 1) / _local19); _local28 = (_local2 / _local19); _local29 = new NumberUV(_local27, _local26); _local30 = new NumberUV(_local27, _local25); _local31 = new NumberUV(_local28, _local25); _local32 = new NumberUV(_local28, _local26); if (_local3 < (_local9.length - 1)){ _local8.push(new Triangle3D(this, new Array(_local21, _local22, _local23), material, new Array(_local30, _local31, _local32))); }; if (_local3 > 1){ _local8.push(new Triangle3D(this, new Array(_local21, _local23, _local24), material, new Array(_local30, _local32, _local29))); }; _local2++; }; }; _local3++; }; this.geometry.ready = true; if (Papervision3D.useRIGHTHANDED){ this.geometry.flipFaces(); }; } } }//package org.papervision3d.objects.primitives
Section 102
//DisplayObject3D (org.papervision3d.objects.DisplayObject3D) package org.papervision3d.objects { import org.papervision3d.core.math.*; import org.papervision3d.core.proto.*; import org.papervision3d.materials.utils.*; import flash.display.*; import org.papervision3d.core.render.data.*; import org.papervision3d.view.*; import org.papervision3d.view.layer.*; import org.papervision3d.core.data.*; import org.papervision3d.core.culling.*; import org.papervision3d.*; public class DisplayObject3D extends DisplayObjectContainer3D { public var filters:Array; public var extra:Object; public var frustumTestMethod:int;// = 0 private var _rotationX:Number; private var _rotationY:Number; private var _rotationZ:Number; private var position:Number3D; public var meshSort:uint;// = 1 public var materials:MaterialsList; public var id:int; private var xAxis:Number3D; private var zAxis:Number3D; private var _scaleDirty:Boolean;// = false private var _numClones:uint;// = 0 public var alpha:Number;// = 1 private var _scaleX:Number; private var _scaleY:Number; private var _scaleZ:Number; public var screen:Number3D; protected var _userData:UserData; public var screenZ:Number; protected var _useOwnContainer:Boolean;// = false public var visible:Boolean; public var name:String; public var container:ViewportLayer; private var target:Number3D; public var world:Matrix3D; public var blendMode:String;// = "normal" private var _material:MaterialObject3D; public var culled:Boolean; public var transform:Matrix3D; public var geometry:GeometryObject3D; public var parent:DisplayObjectContainer3D; protected var _scene:SceneObject3D;// = null public var view:Matrix3D; private var yAxis:Number3D; public var faces:Array; public var flipLightDirection:Boolean;// = false private var _rotation:Number3D; protected var _sorted:Array; protected var _transformDirty:Boolean;// = false private var _rotationDirty:Boolean;// = false public var parentContainer:DisplayObject3D; private static const LEFT:Number3D = new Number3D(-1, 0, 0); public static const MESH_SORT_CLOSE:uint = 3; public static const MESH_SORT_CENTER:uint = 1; private static const BACKWARD:Number3D = new Number3D(0, 0, -1); private static const FORWARD:Number3D = new Number3D(0, 0, 1); public static const MESH_SORT_FAR:uint = 2; private static const DOWN:Number3D = new Number3D(0, -1, 0); private static const UP:Number3D = new Number3D(0, 1, 0); private static const RIGHT:Number3D = new Number3D(1, 0, 0); private static var entry_count:uint = 0; private static var _totalDisplayObjects:int = 0; private static var _tempMatrix:Matrix3D = Matrix3D.IDENTITY; public static var sortedArray:Array = new Array(); private static var _tempQuat:Quaternion = new Quaternion(); private static var toDEGREES:Number = 57.2957795130823; public static var faceLevelMode:Boolean; private static var toRADIANS:Number = 0.0174532925199433; public function DisplayObject3D(_arg1:String=null, _arg2:GeometryObject3D=null):void{ var _local3:Number; _transformDirty = false; position = Number3D.ZERO; target = Number3D.ZERO; zAxis = Number3D.ZERO; xAxis = Number3D.ZERO; yAxis = Number3D.ZERO; _rotation = Number3D.ZERO; _rotationDirty = false; _scaleDirty = false; _numClones = 0; alpha = 1; blendMode = BlendMode.NORMAL; filters = []; _useOwnContainer = false; flipLightDirection = false; frustumTestMethod = FrustumTestMethod.BOUNDING_SPHERE; screen = new Number3D(); _scene = null; meshSort = MESH_SORT_CENTER; faces = new Array(); super(); if (_arg1 != null){ Papervision3D.log(("DisplayObject3D: " + _arg1)); }; this.culled = false; this.transform = Matrix3D.IDENTITY; this.world = Matrix3D.IDENTITY; this.view = Matrix3D.IDENTITY; this.x = 0; this.y = 0; this.z = 0; rotationX = 0; rotationY = 0; rotationZ = 0; _local3 = (Papervision3D.usePERCENT) ? 100 : 1; scaleX = _local3; scaleY = _local3; scaleZ = _local3; this.visible = true; this.id = _totalDisplayObjects++; this.name = ((_arg1) || (String(this.id))); _numClones = 0; if (_arg2){ addGeometry(_arg2); }; } public function set z(_arg1:Number):void{ this.transform.n34 = _arg1; } public function moveDown(_arg1:Number):void{ translate(_arg1, DOWN); } public function set scene(_arg1:SceneObject3D):void{ var _local2:DisplayObject3D; _scene = _arg1; for each (_local2 in this._childrenByName) { if (_local2.scene == null){ _local2.scene = _scene; }; }; } public function project(_arg1:DisplayObject3D, _arg2:RenderSessionData):Number{ var _local3:Number; var _local4:Number; var _local5:DisplayObject3D; if (this._transformDirty){ updateTransform(); }; this.world.calculateMultiply(_arg1.world, this.transform); if ((_arg2.camera is IObjectCuller)){ if (this === _arg2.camera){ this.culled = true; } else { this.culled = (IObjectCuller(_arg2.camera).testObject(this) < 0); }; if (this.culled){ _arg2.renderStatistics.culledObjects++; return (0); }; if (_arg1 !== _arg2.camera){ this.view.calculateMultiply4x4(_arg1.view, this.transform); }; } else { if (_arg1 !== _arg2.camera){ this.view.calculateMultiply(_arg1.view, this.transform); }; }; _local3 = 0; _local4 = 0; for each (_local5 in this._childrenByName) { if (_local5.visible){ _local3 = (_local3 + _local5.project(this, _arg2)); _local4++; }; }; return ((this.screenZ = (_local3 / _local4))); } public function get material():MaterialObject3D{ return (_material); } public function get userData():UserData{ return (_userData); } private function calculateScreenCoords(_arg1:CameraObject3D):void{ var _local2:Number; _local2 = ((_arg1.focus * _arg1.zoom) / (_arg1.focus + view.n34)); screen.x = (view.n14 * _local2); screen.y = (view.n24 * _local2); screen.z = view.n34; } public function lookAt(_arg1:DisplayObject3D, _arg2:Number3D=null):void{ var _local3:Matrix3D; position.reset(this.x, this.y, this.z); target.reset(_arg1.x, _arg1.y, _arg1.z); zAxis.copyFrom(target); zAxis.minusEq(position); zAxis.normalize(); if (zAxis.modulo > 0.1){ xAxis = Number3D.cross(zAxis, ((_arg2) || (UP)), xAxis); xAxis.normalize(); yAxis = Number3D.cross(zAxis, xAxis, yAxis); yAxis.normalize(); _local3 = this.transform; _local3.n11 = (xAxis.x * _scaleX); _local3.n21 = (xAxis.y * _scaleX); _local3.n31 = (xAxis.z * _scaleX); _local3.n12 = (-(yAxis.x) * _scaleY); _local3.n22 = (-(yAxis.y) * _scaleY); _local3.n32 = (-(yAxis.z) * _scaleY); _local3.n13 = (zAxis.x * _scaleZ); _local3.n23 = (zAxis.y * _scaleZ); _local3.n33 = (zAxis.z * _scaleZ); this._transformDirty = false; this._rotationDirty = true; } else { trace("lookAt error"); }; } public function set rotationX(_arg1:Number):void{ this._rotationX = (Papervision3D.useDEGREES) ? (-(_arg1) * toRADIANS) : -(_arg1); this._transformDirty = true; } protected function setParentContainer(_arg1:DisplayObject3D, _arg2:Boolean=true):void{ var _local3:DisplayObject3D; if (((_arg2) && (!((_arg1 == this))))){ parentContainer = _arg1; }; for each (_local3 in children) { _local3.setParentContainer(_arg1, _arg2); }; } public function set rotationZ(_arg1:Number):void{ this._rotationZ = (Papervision3D.useDEGREES) ? (-(_arg1) * toRADIANS) : -(_arg1); this._transformDirty = true; } public function set rotationY(_arg1:Number):void{ this._rotationY = (Papervision3D.useDEGREES) ? (-(_arg1) * toRADIANS) : -(_arg1); this._transformDirty = true; } public function get scale():Number{ if ((((this._scaleX == this._scaleY)) && ((this._scaleX == this._scaleZ)))){ if (Papervision3D.usePERCENT){ return ((this._scaleX * 100)); }; return (this._scaleX); //unresolved jump }; return (NaN); } public function addGeometry(_arg1:GeometryObject3D=null):void{ if (_arg1){ this.geometry = _arg1; }; } public function get sceneX():Number{ return (this.world.n14); } public function get scaleY():Number{ if (Papervision3D.usePERCENT){ return ((this._scaleY * 100)); }; return (this._scaleY); } public function get scaleZ():Number{ if (Papervision3D.usePERCENT){ return ((this._scaleZ * 100)); }; return (this._scaleZ); } public function moveUp(_arg1:Number):void{ translate(_arg1, UP); } public function get scaleX():Number{ if (Papervision3D.usePERCENT){ return ((this._scaleX * 100)); }; return (this._scaleX); } public function distanceTo(_arg1:DisplayObject3D):Number{ var _local2:Number; var _local3:Number; var _local4:Number; _local2 = (this.x - _arg1.x); _local3 = (this.y - _arg1.y); _local4 = (this.z - _arg1.z); return (Math.sqrt((((_local2 * _local2) + (_local3 * _local3)) + (_local4 * _local4)))); } public function get sceneY():Number{ return (this.world.n24); } public function set userData(_arg1:UserData):void{ _userData = _arg1; } public function clone():DisplayObject3D{ var _local1:String; var _local2:DisplayObject3D; var _local3:DisplayObject3D; _local1 = ((this.name + "_") + _numClones++); _local2 = new DisplayObject3D(_local1); if (this.material){ _local2.material = this.material; }; if (this.materials){ _local2.materials = this.materials.clone(); }; if (this.geometry){ _local2.geometry = this.geometry.clone(_local2); _local2.geometry.ready = true; }; _local2.copyTransform(this.transform); for each (_local3 in this.children) { _local2.addChild(_local3.clone()); }; return (_local2); } public function get sceneZ():Number{ return (this.world.n34); } private function updateRotation():void{ _rotation = Matrix3D.matrix2euler(this.transform, _rotation); this._rotationX = (_rotation.x * toRADIANS); this._rotationY = (_rotation.y * toRADIANS); this._rotationZ = (_rotation.z * toRADIANS); this._rotationDirty = false; } public function hitTestObject(_arg1:DisplayObject3D, _arg2:Number=1):Boolean{ var _local3:Number; var _local4:Number; var _local5:Number; var _local6:Number; var _local7:Number; var _local8:Number; _local3 = (this.x - _arg1.x); _local4 = (this.y - _arg1.y); _local5 = (this.z - _arg1.z); _local6 = (((_local3 * _local3) + (_local4 * _local4)) + (_local5 * _local5)); _local7 = (this.geometry) ? this.geometry.boundingSphere.maxDistance : 0; _local8 = (_arg1.geometry) ? _arg1.geometry.boundingSphere.maxDistance : 0; _local7 = (_local7 * _arg2); return (((_local7 + _local8) > _local6)); } override public function toString():String{ return (((((((this.name + ": x:") + Math.round(this.x)) + " y:") + Math.round(this.y)) + " z:") + Math.round(this.z))); } public function set material(_arg1:MaterialObject3D):void{ if (_material){ _material.unregisterObject(this); }; _material = _arg1; _material.registerObject(this); } public function copyTransform(_arg1):void{ var _local2:Matrix3D; var _local3:Matrix3D; _local2 = this.transform; _local3 = ((_arg1 is DisplayObject3D)) ? _arg1.transform : _arg1; _local2.n11 = _local3.n11; _local2.n12 = _local3.n12; _local2.n13 = _local3.n13; _local2.n14 = _local3.n14; _local2.n21 = _local3.n21; _local2.n22 = _local3.n22; _local2.n23 = _local3.n23; _local2.n24 = _local3.n24; _local2.n31 = _local3.n31; _local2.n32 = _local3.n32; _local2.n33 = _local3.n33; _local2.n34 = _local3.n34; this._transformDirty = false; this._rotationDirty = true; } public function get x():Number{ return (this.transform.n14); } public function get y():Number{ return (this.transform.n24); } public function get z():Number{ return (this.transform.n34); } public function roll(_arg1:Number):void{ var _local2:Number3D; _arg1 = (Papervision3D.useDEGREES) ? (_arg1 * toRADIANS) : _arg1; _local2 = FORWARD.clone(); if (this._transformDirty){ updateTransform(); }; Matrix3D.rotateAxis(transform, _local2); _tempMatrix = Matrix3D.rotationMatrix(_local2.x, _local2.y, _local2.z, _arg1, _tempMatrix); this.transform.calculateMultiply3x3(_tempMatrix, transform); this._rotationDirty = true; } public function yaw(_arg1:Number):void{ var _local2:Number3D; _arg1 = (Papervision3D.useDEGREES) ? (_arg1 * toRADIANS) : _arg1; _local2 = UP.clone(); if (this._transformDirty){ updateTransform(); }; Matrix3D.rotateAxis(transform, _local2); _tempMatrix = Matrix3D.rotationMatrix(_local2.x, _local2.y, _local2.z, _arg1, _tempMatrix); this.transform.calculateMultiply3x3(_tempMatrix, transform); this._rotationDirty = true; } public function getMaterialByName(_arg1:String):MaterialObject3D{ var _local2:MaterialObject3D; var _local3:DisplayObject3D; _local2 = (this.materials) ? this.materials.getMaterialByName(_arg1) : null; if (_local2){ return (_local2); }; for each (_local3 in this._childrenByName) { _local2 = _local3.getMaterialByName(_arg1); if (_local2){ return (_local2); }; }; return (null); } public function set useOwnContainer(_arg1:Boolean):void{ _useOwnContainer = _arg1; setParentContainer(this, true); } public function moveLeft(_arg1:Number):void{ translate(_arg1, LEFT); } public function get scene():SceneObject3D{ return (_scene); } public function get rotationY():Number{ if (this._rotationDirty){ updateRotation(); }; return ((Papervision3D.useDEGREES) ? (-(this._rotationY) * toDEGREES) : -(this._rotationY)); } public function get rotationZ():Number{ if (this._rotationDirty){ updateRotation(); }; return ((Papervision3D.useDEGREES) ? (-(this._rotationZ) * toDEGREES) : -(this._rotationZ)); } public function set scaleY(_arg1:Number):void{ if (Papervision3D.usePERCENT){ this._scaleY = (_arg1 / 100); } else { this._scaleY = _arg1; }; this._transformDirty = true; } public function set scaleZ(_arg1:Number):void{ if (Papervision3D.usePERCENT){ this._scaleZ = (_arg1 / 100); } else { this._scaleZ = _arg1; }; this._transformDirty = true; } public function get rotationX():Number{ if (this._rotationDirty){ updateRotation(); }; return ((Papervision3D.useDEGREES) ? (-(this._rotationX) * toDEGREES) : -(this._rotationX)); } public function translate(_arg1:Number, _arg2:Number3D):void{ var _local3:Number3D; _local3 = _arg2.clone(); if (this._transformDirty){ updateTransform(); }; Matrix3D.rotateAxis(transform, _local3); this.x = (this.x + (_arg1 * _local3.x)); this.y = (this.y + (_arg1 * _local3.y)); this.z = (this.z + (_arg1 * _local3.z)); } public function set scaleX(_arg1:Number):void{ if (Papervision3D.usePERCENT){ this._scaleX = (_arg1 / 100); } else { this._scaleX = _arg1; }; this._transformDirty = true; } public function pitch(_arg1:Number):void{ var _local2:Number3D; _arg1 = (Papervision3D.useDEGREES) ? (_arg1 * toRADIANS) : _arg1; _local2 = RIGHT.clone(); if (this._transformDirty){ updateTransform(); }; Matrix3D.rotateAxis(transform, _local2); _tempMatrix = Matrix3D.rotationMatrix(_local2.x, _local2.y, _local2.z, _arg1, _tempMatrix); this.transform.calculateMultiply3x3(_tempMatrix, transform); this._rotationDirty = true; } public function set scale(_arg1:Number):void{ if (Papervision3D.usePERCENT){ _arg1 = (_arg1 / 100); }; this._scaleX = (this._scaleY = (this._scaleZ = _arg1)); this._transformDirty = true; } public function moveForward(_arg1:Number):void{ translate(_arg1, FORWARD); } public function copyPosition(_arg1):void{ var _local2:Matrix3D; var _local3:Matrix3D; _local2 = this.transform; _local3 = ((_arg1 is DisplayObject3D)) ? _arg1.transform : _arg1; _local2.n14 = _local3.n14; _local2.n24 = _local3.n24; _local2.n34 = _local3.n34; } public function get useOwnContainer():Boolean{ return (_useOwnContainer); } protected function updateTransform():void{ var _local1:Matrix3D; _tempQuat = Matrix3D.euler2quaternion(-(this._rotationY), -(this._rotationZ), this._rotationX, _tempQuat); _tempMatrix = Matrix3D.quaternion2matrix(_tempQuat.x, _tempQuat.y, _tempQuat.z, _tempQuat.w, _tempMatrix); _local1 = this.transform; _tempMatrix.n14 = _local1.n14; _tempMatrix.n24 = _local1.n24; _tempMatrix.n34 = _local1.n34; _local1.copy(_tempMatrix); _tempMatrix.reset(); _tempMatrix.n11 = this._scaleX; _tempMatrix.n22 = this._scaleY; _tempMatrix.n33 = this._scaleZ; this.transform.calculateMultiply(_local1, _tempMatrix); this._transformDirty = false; } public function createViewportLayer(_arg1:Viewport3D, _arg2:Boolean=true):ViewportLayer{ var _local3:ViewportLayer; _local3 = _arg1.getChildLayer(this, true); if (_arg2){ addChildrenToLayer(this, _local3); }; return (_local3); } public function hitTestPoint(_arg1:Number, _arg2:Number, _arg3:Number):Boolean{ var _local4:Number; var _local5:Number; var _local6:Number; var _local7:Number; var _local8:Number; _local4 = (this.x - _arg1); _local5 = (this.y - _arg2); _local6 = (this.z - _arg3); _local7 = (((_local4 * _local4) + (_local5 * _local5)) + (_local6 * _local6)); _local8 = (this.geometry) ? this.geometry.boundingSphere.maxDistance : 0; return ((_local8 > _local7)); } public function addChildrenToLayer(_arg1:DisplayObject3D, _arg2:ViewportLayer):void{ var _local3:DisplayObject3D; for each (_local3 in _arg1.children) { _arg2.addDisplayObject3D(_local3); _local3.addChildrenToLayer(_local3, _arg2); }; } public function moveRight(_arg1:Number):void{ translate(_arg1, RIGHT); } public function moveBackward(_arg1:Number):void{ translate(_arg1, BACKWARD); } public function set x(_arg1:Number):void{ this.transform.n14 = _arg1; } public function materialsList():String{ var _local1:String; var _local2:String; var _local3:DisplayObject3D; _local1 = ""; for (_local2 in this.materials) { _local1 = (_local1 + (_local2 + "\n")); }; for each (_local3 in this._childrenByName) { for (_local2 in _local3.materials.materialsByName) { _local1 = (_local1 + (("+ " + _local2) + "\n")); }; }; return (_local1); } public function set y(_arg1:Number):void{ this.transform.n24 = _arg1; } override public function addChild(_arg1:DisplayObject3D, _arg2:String=null):DisplayObject3D{ _arg1 = super.addChild(_arg1, _arg2); if (_arg1.scene == null){ _arg1.scene = scene; }; if (this.useOwnContainer){ _arg1.parentContainer = this; }; return (_arg1); } public static function get ZERO():DisplayObject3D{ return (new (DisplayObject3D)); } } }//package org.papervision3d.objects
Section 103
//BasicRenderEngine (org.papervision3d.render.BasicRenderEngine) package org.papervision3d.render { import org.papervision3d.core.proto.*; import org.papervision3d.core.render.data.*; import flash.geom.*; import org.papervision3d.view.*; import org.papervision3d.core.render.command.*; import org.papervision3d.core.render.material.*; import org.papervision3d.view.layer.*; import org.papervision3d.events.*; import org.papervision3d.core.render.*; import org.papervision3d.core.render.project.*; import org.papervision3d.core.render.sort.*; import org.papervision3d.core.render.filter.*; import org.papervision3d.core.utils.*; public class BasicRenderEngine extends AbstractRenderEngine implements IRenderEngine { public var sorter:IRenderSorter; public var projectionPipeline:ProjectionPipeline; protected var renderStatistics:RenderStatistics; protected var renderDoneEvent:RendererEvent; protected var renderList:Array; protected var projectionDoneEvent:RendererEvent; protected var renderSessionData:RenderSessionData; protected var stopWatch:StopWatch; public var filter:IRenderFilter; protected var cleanRHD:RenderHitData; public function BasicRenderEngine():void{ cleanRHD = new RenderHitData(); super(); init(); } override public function removeFromRenderList(_arg1:IRenderListItem):int{ return (renderList.splice(renderList.indexOf(_arg1), 1)); } protected function doRender(_arg1:RenderSessionData, _arg2:Array=null):RenderStatistics{ var _local3:RenderableListItem; var _local4:Viewport3D; var _local5:ViewportLayer; stopWatch.reset(); stopWatch.start(); MaterialManager.getInstance().updateMaterialsBeforeRender(_arg1); filter.filter(renderList); sorter.sort(renderList); _local4 = _arg1.viewPort; while ((_local3 = renderList.pop())) { _local5 = _local4.accessLayerFor(_local3, true); _local3.render(_arg1, _local5.graphicsChannel); _local4.lastRenderList.push(_local3); _local5.processRenderItem(_local3); }; MaterialManager.getInstance().updateMaterialsAfterRender(_arg1); _arg1.renderStatistics.renderTime = stopWatch.stop(); _arg1.viewPort.updateAfterRender(_arg1); return (renderStatistics); } protected function init():void{ renderStatistics = new RenderStatistics(); projectionPipeline = new BasicProjectionPipeline(); stopWatch = new StopWatch(); sorter = new BasicRenderSorter(); filter = new BasicRenderFilter(); renderList = new Array(); renderSessionData = new RenderSessionData(); renderSessionData.renderer = this; projectionDoneEvent = new RendererEvent(RendererEvent.PROJECTION_DONE, renderSessionData); renderDoneEvent = new RendererEvent(RendererEvent.RENDER_DONE, renderSessionData); } override public function renderScene(_arg1:SceneObject3D, _arg2:CameraObject3D, _arg3:Viewport3D, _arg4:Boolean=true):RenderStatistics{ renderSessionData.scene = _arg1; renderSessionData.camera = _arg2; renderSessionData.viewPort = _arg3; renderSessionData.container = _arg3.containerSprite; renderSessionData.triangleCuller = _arg3.triangleCuller; renderSessionData.particleCuller = _arg3.particleCuller; renderSessionData.renderObjects = _arg1.objects; renderSessionData.renderLayers = null; renderSessionData.renderStatistics.clear(); _arg3.updateBeforeRender(renderSessionData); projectionPipeline.project(renderSessionData); if (hasEventListener(RendererEvent.PROJECTION_DONE)){ dispatchEvent(projectionDoneEvent); }; doRender(renderSessionData, null); if (hasEventListener(RendererEvent.RENDER_DONE)){ dispatchEvent(renderDoneEvent); }; return (renderSessionData.renderStatistics); } public function hitTestPoint2D(_arg1:Point, _arg2:Viewport3D):RenderHitData{ return (_arg2.hitTestPoint2D(_arg1)); } override public function addToRenderList(_arg1:IRenderListItem):int{ return (renderList.push(_arg1)); } public function renderLayers(_arg1:SceneObject3D, _arg2:CameraObject3D, _arg3:Viewport3D, _arg4:Array=null, _arg5:Boolean=true):RenderStatistics{ renderSessionData.scene = _arg1; renderSessionData.camera = _arg2; renderSessionData.viewPort = _arg3; renderSessionData.container = _arg3.containerSprite; renderSessionData.triangleCuller = _arg3.triangleCuller; renderSessionData.particleCuller = _arg3.particleCuller; renderSessionData.renderObjects = getLayerObjects(_arg4); renderSessionData.renderLayers = _arg4; renderSessionData.renderStatistics.clear(); _arg3.updateBeforeRender(renderSessionData); projectionPipeline.project(renderSessionData); if (hasEventListener(RendererEvent.PROJECTION_DONE)){ dispatchEvent(projectionDoneEvent); }; doRender(renderSessionData); if (hasEventListener(RendererEvent.RENDER_DONE)){ dispatchEvent(renderDoneEvent); }; return (renderSessionData.renderStatistics); } private function getLayerObjects(_arg1:Array):Array{ var _local2:Array; var _local3:ViewportLayer; _local2 = new Array(); for each (_local3 in _arg1) { _local2 = _local2.concat(_local3.getLayerObjects()); }; return (_local2); } public function destroy():void{ renderDoneEvent = null; projectionDoneEvent = null; projectionPipeline = null; sorter = null; filter = null; renderStatistics = null; renderList = null; renderSessionData.destroy(); renderSessionData = null; cleanRHD = null; stopWatch = null; } } }//package org.papervision3d.render
Section 104
//Scene3D (org.papervision3d.scenes.Scene3D) package org.papervision3d.scenes { import org.papervision3d.core.proto.*; public class Scene3D extends SceneObject3D { } }//package org.papervision3d.scenes
Section 105
//ViewportLayerSortMode (org.papervision3d.view.layer.util.ViewportLayerSortMode) package org.papervision3d.view.layer.util { public class ViewportLayerSortMode { public static var Z_SORT:String = "z"; public static var INDEX_SORT:String = "index"; } }//package org.papervision3d.view.layer.util
Section 106
//ViewportBaseLayer (org.papervision3d.view.layer.ViewportBaseLayer) package org.papervision3d.view.layer { import org.papervision3d.view.*; import org.papervision3d.objects.*; public class ViewportBaseLayer extends ViewportLayer { public function ViewportBaseLayer(_arg1:Viewport3D){ super(_arg1, null); } override public function updateBeforeRender():void{ var _local1:int; clear(); _local1 = (childLayers.length - 1); while (_local1 >= 0) { if (childLayers[_local1].dynamicLayer){ removeLayerAt(_local1); }; _local1--; }; super.updateBeforeRender(); } override public function getChildLayer(_arg1:DisplayObject3D, _arg2:Boolean=true, _arg3:Boolean=false):ViewportLayer{ if (layers[_arg1]){ return (layers[_arg1]); }; if (((_arg2) || (_arg1.useOwnContainer))){ return (getChildLayerFor(_arg1, _arg3)); }; return (this); } } }//package org.papervision3d.view.layer
Section 107
//ViewportLayer (org.papervision3d.view.layer.ViewportLayer) package org.papervision3d.view.layer { import flash.display.*; import org.papervision3d.view.*; import org.papervision3d.core.render.command.*; import org.papervision3d.objects.*; import flash.utils.*; import org.papervision3d.view.layer.util.*; public class ViewportLayer extends Sprite { public var layerIndex:Number; public var layers:Dictionary; public var dynamicLayer:Boolean;// = false public var sortMode:String; public var weight:Number;// = 0 public var childLayers:Array; public var forceDepth:Boolean;// = false protected var viewport:Viewport3D; public var screenDepth:Number;// = 0 public var displayObject3D:DisplayObject3D; public var displayObjects:Dictionary; public var graphicsChannel:Graphics; public function ViewportLayer(_arg1:Viewport3D, _arg2:DisplayObject3D, _arg3:Boolean=false){ layers = new Dictionary(true); displayObjects = new Dictionary(true); forceDepth = false; screenDepth = 0; weight = 0; sortMode = ViewportLayerSortMode.Z_SORT; dynamicLayer = false; super(); this.viewport = _arg1; this.displayObject3D = _arg2; this.dynamicLayer = _arg3; this.graphicsChannel = this.graphics; if (_arg3){ this.filters = _arg2.filters; this.blendMode = _arg2.blendMode; this.alpha = _arg2.alpha; }; if (_arg2){ addDisplayObject3D(_arg2); }; init(); } public function getLayerObjects(_arg1:Array=null):Array{ var _local2:DisplayObject3D; var _local3:ViewportLayer; if (!_arg1){ _arg1 = new Array(); }; for each (_local2 in this.displayObjects) { if (_local2){ _arg1.push(_local2); }; }; for each (_local3 in childLayers) { _local3.getLayerObjects(_arg1); }; return (_arg1); } protected function init():void{ childLayers = new Array(); } public function updateInfo():void{ var _local1:ViewportLayer; for each (_local1 in childLayers) { _local1.updateInfo(); if (!forceDepth){ this.weight = (this.weight + _local1.weight); this.screenDepth = (this.screenDepth + (_local1.screenDepth * _local1.weight)); }; }; if (!forceDepth){ this.screenDepth = (this.screenDepth / this.weight); }; } public function sortChildLayers():void{ if (sortMode == ViewportLayerSortMode.Z_SORT){ childLayers.sortOn("screenDepth", (Array.DESCENDING | Array.NUMERIC)); } else { childLayers.sortOn("layerIndex", Array.NUMERIC); }; orderLayers(); } private function onChildRemoved(_arg1:ViewportLayerEvent):void{ if (_arg1.do3d){ unlinkChild(_arg1.do3d, _arg1); }; } public function removeAllLayers():void{ var _local1:int; _local1 = (childLayers.length - 1); while (_local1 >= 0) { removeLayerAt(_local1); _local1--; }; } public function updateAfterRender():void{ var _local1:ViewportLayer; for each (_local1 in childLayers) { _local1.updateAfterRender(); }; } public function removeLayer(_arg1:ViewportLayer):void{ var _local2:int; _local2 = getChildIndex(_arg1); if (_local2 > -1){ removeLayerAt(_local2); } else { trace("Layer not found for removal."); }; } protected function getChildLayerFor(_arg1:DisplayObject3D, _arg2:Boolean=false):ViewportLayer{ var _local3:ViewportLayer; if (_arg1){ _local3 = new ViewportLayer(viewport, _arg1, _arg1.useOwnContainer); addLayer(_local3); if (_arg2){ _arg1.addChildrenToLayer(_arg1, _local3); }; return (_local3); } else { trace("Needs to be a do3d"); }; return (null); } public function addLayer(_arg1:ViewportLayer):void{ var _local2:DisplayObject3D; var _local3:ViewportLayer; childLayers.push(_arg1); addChild(_arg1); _arg1.addEventListener(ViewportLayerEvent.CHILD_ADDED, onChildAdded); _arg1.addEventListener(ViewportLayerEvent.CHILD_REMOVED, onChildRemoved); for each (_local2 in _arg1.displayObjects) { linkChild(_local2, _arg1); }; for each (_local3 in _arg1.layers) { for each (_local2 in _local3.displayObjects) { linkChild(_local2, _local3); }; }; } public function childLayerIndex(_arg1:DisplayObject3D):Number{ var _local2:int; _arg1 = (_arg1.parentContainer) ? _arg1.parentContainer : _arg1; _local2 = 0; while (_local2 < childLayers.length) { if (childLayers[_local2].hasDisplayObject3D(_arg1)){ return (_local2); }; _local2++; }; return (-1); } protected function orderLayers():void{ var _local1:int; _local1 = 0; while (_local1 < childLayers.length) { this.setChildIndex(childLayers[_local1], _local1); childLayers[_local1].sortChildLayers(); _local1++; }; } public function removeLayerAt(_arg1:Number):void{ var _local2:DisplayObject3D; for each (_local2 in childLayers[_arg1].displayObjects) { unlinkChild(_local2); }; removeChild(childLayers[_arg1]); childLayers.splice(_arg1, 1); } protected function reset():void{ if (!forceDepth){ screenDepth = 0; }; this.weight = 0; } private function linkChild(_arg1:DisplayObject3D, _arg2:ViewportLayer, _arg3:ViewportLayerEvent=null):void{ layers[_arg1] = _arg2; dispatchEvent(new ViewportLayerEvent(ViewportLayerEvent.CHILD_ADDED, _arg1, _arg2)); } public function updateBeforeRender():void{ var _local1:ViewportLayer; clear(); for each (_local1 in childLayers) { _local1.updateBeforeRender(); }; } private function onChildAdded(_arg1:ViewportLayerEvent):void{ if (_arg1.do3d){ linkChild(_arg1.do3d, _arg1.layer, _arg1); }; } public function getChildLayer(_arg1:DisplayObject3D, _arg2:Boolean=true, _arg3:Boolean=false):ViewportLayer{ _arg1 = (_arg1.parentContainer) ? _arg1.parentContainer : _arg1; if (layers[_arg1]){ return (layers[_arg1]); }; if (_arg2){ return (getChildLayerFor(_arg1, _arg3)); }; return (null); } public function processRenderItem(_arg1:RenderableListItem):void{ if (!forceDepth){ this.screenDepth = (this.screenDepth + _arg1.screenDepth); this.weight++; }; } public function clear():void{ graphicsChannel.clear(); reset(); } public function removeDisplayObject3D(_arg1:DisplayObject3D):void{ displayObjects[_arg1] = null; dispatchEvent(new ViewportLayerEvent(ViewportLayerEvent.CHILD_REMOVED, _arg1, this)); } private function unlinkChild(_arg1:DisplayObject3D, _arg2:ViewportLayerEvent=null):void{ layers[_arg1] = null; dispatchEvent(new ViewportLayerEvent(ViewportLayerEvent.CHILD_REMOVED, _arg1)); } public function addDisplayObject3D(_arg1:DisplayObject3D, _arg2:Boolean=true):void{ if (!_arg1){ return; }; displayObjects[_arg1] = _arg1; dispatchEvent(new ViewportLayerEvent(ViewportLayerEvent.CHILD_ADDED, _arg1, this)); if (_arg2){ _arg1.addChildrenToLayer(_arg1, this); }; } public function hasDisplayObject3D(_arg1:DisplayObject3D):Boolean{ return (!((displayObjects[_arg1] == null))); } } }//package org.papervision3d.view.layer
Section 108
//ViewportLayerEvent (org.papervision3d.view.layer.ViewportLayerEvent) package org.papervision3d.view.layer { import flash.events.*; import org.papervision3d.objects.*; public class ViewportLayerEvent extends Event { public var layer:ViewportLayer; public var do3d:DisplayObject3D; public static const CHILD_REMOVED:String = "childRemoved"; public static const CHILD_ADDED:String = "childAdded"; public function ViewportLayerEvent(_arg1:String, _arg2:DisplayObject3D=null, _arg3:ViewportLayer=null){ super(_arg1, false, false); this.do3d = _arg2; this.layer = _arg3; } } }//package org.papervision3d.view.layer
Section 109
//Viewport3D (org.papervision3d.view.Viewport3D) package org.papervision3d.view { import flash.display.*; import flash.events.*; import org.papervision3d.core.render.data.*; import flash.geom.*; import org.papervision3d.core.render.command.*; import org.papervision3d.objects.*; import org.papervision3d.view.layer.*; import org.papervision3d.core.culling.*; import flash.utils.*; import org.papervision3d.core.view.*; import org.papervision3d.core.render.*; import org.papervision3d.core.utils.*; public class Viewport3D extends Sprite implements IViewport3D { protected var _interactive:Boolean; public var cullingRectangle:Rectangle; protected var _viewportObjectFilter:ViewportObjectFilter; protected var _layerInstances:Dictionary; protected var _hWidth:Number; protected var _autoScaleToStage:Boolean; protected var _lastRenderer:IRenderEngine; protected var _containerSprite:ViewportBaseLayer; protected var _hHeight:Number; public var sizeRectangle:Rectangle; protected var renderHitData:RenderHitData; protected var _autoClipping:Boolean; protected var _height:Number; public var interactiveSceneManager:InteractiveSceneManager; public var lastRenderList:Array; public var lineCuller:ILineCuller; protected var _autoCulling:Boolean; public var particleCuller:IParticleCuller; protected var _width:Number; public var triangleCuller:ITriangleCuller; public function Viewport3D(_arg1:Number=640, _arg2:Number=480, _arg3:Boolean=false, _arg4:Boolean=false, _arg5:Boolean=true, _arg6:Boolean=true){ init(); this.interactive = _arg4; this.viewportWidth = _arg1; this.viewportHeight = _arg2; this.autoClipping = _arg5; this.autoCulling = _arg6; this.autoScaleToStage = _arg3; this._layerInstances = new Dictionary(true); } public function set autoCulling(_arg1:Boolean):void{ if (_arg1){ triangleCuller = new RectangleTriangleCuller(cullingRectangle); particleCuller = new RectangleParticleCuller(cullingRectangle); lineCuller = new RectangleLineCuller(cullingRectangle); } else { if (!_arg1){ triangleCuller = new DefaultTriangleCuller(); particleCuller = new DefaultParticleCuller(); lineCuller = new DefaultLineCuller(); }; }; _autoCulling = _arg1; } protected function onRemovedFromStage(_arg1:Event):void{ stage.removeEventListener(Event.RESIZE, onStageResize); } public function hitTestMouse():RenderHitData{ var _local1:Point; _local1 = new Point(containerSprite.mouseX, containerSprite.mouseY); return (hitTestPoint2D(_local1)); } protected function init():void{ this.renderHitData = new RenderHitData(); lastRenderList = new Array(); sizeRectangle = new Rectangle(); cullingRectangle = new Rectangle(); _containerSprite = new ViewportBaseLayer(this); addChild(_containerSprite); addEventListener(Event.ADDED_TO_STAGE, onAddedToStage); addEventListener(Event.REMOVED_FROM_STAGE, onRemovedFromStage); } protected function onStageResize(_arg1:Event=null):void{ if (_autoScaleToStage){ viewportWidth = stage.stageWidth; viewportHeight = stage.stageHeight; }; } public function set autoClipping(_arg1:Boolean):void{ if (_arg1){ scrollRect = sizeRectangle; } else { scrollRect = null; }; _autoClipping = _arg1; } public function updateAfterRender(_arg1:RenderSessionData):void{ var _local2:ViewportLayer; if (interactive){ interactiveSceneManager.updateRenderHitData(); }; if (_arg1.renderLayers){ for each (_local2 in _arg1.renderLayers) { _local2.updateInfo(); _local2.sortChildLayers(); _local2.updateAfterRender(); }; } else { containerSprite.updateInfo(); containerSprite.updateAfterRender(); }; containerSprite.sortChildLayers(); } public function accessLayerFor(_arg1:RenderableListItem, _arg2:Boolean=false):ViewportLayer{ var _local3:DisplayObject3D; if (_arg1.renderableInstance){ _local3 = _arg1.renderableInstance.instance; _local3 = (_local3.parentContainer) ? _local3.parentContainer : _local3; if (containerSprite.layers[_local3]){ if (_arg2){ _local3.container = containerSprite.layers[_local3]; }; return (containerSprite.layers[_local3]); } else { if (_local3.useOwnContainer){ return (containerSprite.getChildLayer(_local3, true, true)); }; }; }; return (containerSprite); } public function get viewportHeight():Number{ return (_height); } public function get autoCulling():Boolean{ return (_autoCulling); } public function hitTestPoint2D(_arg1:Point):RenderHitData{ var _local2:RenderableListItem; var _local3:RenderHitData; var _local4:IRenderListItem; var _local5:uint; renderHitData.clear(); if (interactive){ _local3 = renderHitData; _local5 = lastRenderList.length; while ((_local4 = lastRenderList[--_local5])) { if ((_local4 is RenderableListItem)){ _local2 = (_local4 as RenderableListItem); _local3 = _local2.hitTestPoint2D(_arg1, _local3); if (_local3.hasHit){ return (_local3); }; }; }; }; return (renderHitData); } public function updateBeforeRender(_arg1:RenderSessionData):void{ var _local2:ViewportLayer; lastRenderList.length = 0; if (_arg1.renderLayers){ for each (_local2 in _arg1.renderLayers) { _local2.updateBeforeRender(); }; } else { _containerSprite.updateBeforeRender(); }; _layerInstances = new Dictionary(true); } protected function onAddedToStage(_arg1:Event):void{ stage.addEventListener(Event.RESIZE, onStageResize); onStageResize(); } public function getChildLayer(_arg1:DisplayObject3D, _arg2:Boolean=true, _arg3:Boolean=true):ViewportLayer{ return (containerSprite.getChildLayer(_arg1, _arg2, _arg3)); } public function get viewportObjectFilter():ViewportObjectFilter{ return (_viewportObjectFilter); } public function get containerSprite():ViewportLayer{ return (_containerSprite); } public function set viewportWidth(_arg1:Number):void{ _width = _arg1; _hWidth = (_arg1 / 2); containerSprite.x = _hWidth; cullingRectangle.x = -(_hWidth); cullingRectangle.width = _arg1; sizeRectangle.width = _arg1; if (_autoClipping){ scrollRect = sizeRectangle; }; } public function get autoClipping():Boolean{ return (_autoClipping); } public function set viewportObjectFilter(_arg1:ViewportObjectFilter):void{ _viewportObjectFilter = _arg1; } public function get viewportWidth():Number{ return (_width); } public function set autoScaleToStage(_arg1:Boolean):void{ _autoScaleToStage = _arg1; if (((_arg1) && (!((stage == null))))){ onStageResize(); }; } public function set interactive(_arg1:Boolean):void{ if (_arg1 != _interactive){ if (((_interactive) && (interactiveSceneManager))){ interactiveSceneManager.destroy(); interactiveSceneManager = null; }; _interactive = _arg1; if (_arg1){ interactiveSceneManager = new InteractiveSceneManager(this); }; }; } public function set viewportHeight(_arg1:Number):void{ _height = _arg1; _hHeight = (_arg1 / 2); containerSprite.y = _hHeight; cullingRectangle.y = -(_hHeight); cullingRectangle.height = _arg1; sizeRectangle.height = _arg1; if (_autoClipping){ scrollRect = sizeRectangle; }; } public function get autoScaleToStage():Boolean{ return (_autoScaleToStage); } public function get interactive():Boolean{ return (_interactive); } public function destroy():void{ if (interactiveSceneManager){ interactiveSceneManager.destroy(); interactiveSceneManager = null; }; lastRenderList = null; } } }//package org.papervision3d.view
Section 110
//Papervision3D (org.papervision3d.Papervision3D) package org.papervision3d { public class Papervision3D { public static var useDEGREES:Boolean = true; public static var useRIGHTHANDED:Boolean = false; public static var VERBOSE:Boolean = true; public static var NAME:String = "Papervision3D"; public static var DATE:String = "24.03.08"; public static var AUTHOR:String = "(c) 2006-2007 Copyright by Carlos Ulloa - | John Grden | Ralph Hauwert | Tim Knip | Andy Zupko"; public static var VERSION:String = "Public Alpha 2.0 - Great White"; public static var usePERCENT:Boolean = false; public static function log(_arg1:String):void{ if (Papervision3D.VERBOSE){ trace(_arg1); }; } } }//package org.papervision3d
Section 111
//adHold_5 (Q_fla.adHold_5) package Q_fla { import flash.display.*; import flash.events.*; import flash.geom.*; import flash.utils.*; import flash.media.*; import flash.net.*; import flash.text.*; import flash.system.*; import adobe.utils.*; import flash.accessibility.*; import flash.errors.*; import flash.external.*; import flash.filters.*; import flash.printing.*; import flash.ui.*; import flash.xml.*; public dynamic class adHold_5 extends MovieClip { public function adHold_5(){ addFrameScript(0, frame1, 4, frame5); } function frame1(){ stop(); } function frame5(){ MovieClip(this.parent).transitionMc.playFrame("maxIntro"); stop(); } } }//package Q_fla
Section 112
//avatar_29 (Q_fla.avatar_29) package Q_fla { import flash.display.*; public dynamic class avatar_29 extends MovieClip { public function avatar_29(){ addFrameScript(0, frame1, 9, frame10, 19, frame20, 29, frame30); } function frame10(){ stop(); } function frame1(){ stop(); } function frame20(){ stop(); } function frame30(){ stop(); } } }//package Q_fla
Section 113
//button_rollover_16 (Q_fla.button_rollover_16) package Q_fla { import flash.display.*; public dynamic class button_rollover_16 extends MovieClip { public function button_rollover_16(){ addFrameScript(19, frame20); } function frame20(){ stop(); } } }//package Q_fla
Section 114
//clip_sd88detincelle_10 (Q_fla.clip_sd88detincelle_10) package Q_fla { import flash.display.*; public dynamic class clip_sd88detincelle_10 extends MovieClip { public function clip_sd88detincelle_10(){ addFrameScript(13, frame14); } function frame14(){ stop(); } } }//package Q_fla
Section 115
//cup_disappear_48 (Q_fla.cup_disappear_48) package Q_fla { import flash.display.*; public dynamic class cup_disappear_48 extends MovieClip { public var flatCup:MovieClip; public function cup_disappear_48(){ addFrameScript(60, frame61); } function frame61(){ stop(); } } }//package Q_fla
Section 116
//cupsMc_54 (Q_fla.cupsMc_54) package Q_fla { import flash.display.*; public dynamic class cupsMc_54 extends MovieClip { public var textMc:MovieClip; } }//package Q_fla
Section 117
//DynamicTextField_Big_Center_52 (Q_fla.DynamicTextField_Big_Center_52) package Q_fla { import flash.display.*; import flash.text.*; public dynamic class DynamicTextField_Big_Center_52 extends MovieClip { public var dynamicText:TextField; } }//package Q_fla
Section 118
//freeinternetgames_9 (Q_fla.freeinternetgames_9) package Q_fla { import flash.display.*; public dynamic class freeinternetgames_9 extends MovieClip { public function freeinternetgames_9(){ addFrameScript(59, frame60); } function frame60(){ stop(); } } }//package Q_fla
Section 119
//fulltime_55 (Q_fla.fulltime_55) package Q_fla { import flash.display.*; import flash.events.*; import flash.geom.*; import flash.utils.*; import flash.media.*; import flash.net.*; import flash.text.*; import flash.system.*; import adobe.utils.*; import flash.accessibility.*; import flash.errors.*; import flash.external.*; import flash.filters.*; import flash.printing.*; import flash.ui.*; import flash.xml.*; public dynamic class fulltime_55 extends MovieClip { public var textMc:MovieClip; public function fulltime_55(){ addFrameScript(0, frame1, 1, frame2, 59, frame60); } function frame1(){ stop(); } function frame2(){ textMc.dynamicText.text = "FULLTIME"; } function frame60(){ MovieClip(this.parent.parent).transitionMc.playFrame("gameOver"); } } }//package Q_fla
Section 120
//GameOverlayComp_50 (Q_fla.GameOverlayComp_50) package Q_fla { import flash.display.*; public dynamic class GameOverlayComp_50 extends MovieClip { public var radar:MovieClip; public var fulltime:MovieClip; public var readyGo:MovieClip; public var cupsMc:MovieClip; public var timerMc:MovieClip; public var scoreMc:MovieClip; public var pointsUp:MovieClip; } }//package Q_fla
Section 121
//GameSoundMc_64 (Q_fla.GameSoundMc_64) package Q_fla { import flash.display.*; public dynamic class GameSoundMc_64 extends MovieClip { public var curSound; public function GameSoundMc_64(){ addFrameScript(0, frame1, 1, frame2, 15, frame16); } function frame16(){ curSound = "fast"; stop(); } function frame1(){ stop(); } function frame2(){ curSound = "normal"; stop(); } } }//package Q_fla
Section 122
//Instructions_mc_69 (Q_fla.Instructions_mc_69) package Q_fla { import flash.display.*; public dynamic class Instructions_mc_69 extends MovieClip { public function Instructions_mc_69(){ addFrameScript(318, frame319); } function frame319(){ gotoAndPlay("restart"); } } }//package Q_fla
Section 123
//MainTimeline (Q_fla.MainTimeline) package Q_fla { import org.papervision3d.core.math.*; import org.papervision3d.materials.utils.*; import flash.display.*; import flash.events.*; import flash.geom.*; import org.papervision3d.view.*; import org.papervision3d.objects.*; import flash.utils.*; import mochi.*; import org.papervision3d.view.layer.util.*; import flash.media.*; import org.papervision3d.render.*; import titanball.*; import flash.net.*; import org.papervision3d.scenes.*; import org.papervision3d.materials.*; import org.papervision3d.cameras.*; import net.hires.utils.*; import flash.text.*; import org.papervision3d.objects.primitives.*; import flash.system.*; import adobe.utils.*; import flash.accessibility.*; import flash.errors.*; import flash.external.*; import flash.filters.*; import flash.printing.*; import flash.ui.*; import flash.xml.*; public dynamic class MainTimeline extends MovieClip { public var cupList:MaterialsList; public var flashCounter:Number; public var flatCup:MovieClip; public var gameOver:Boolean; public var shortSide:MovieClip; public var menuBt:SimpleButton; public var directionalTarget:MovieClip; public var excludeFaces:int; public var sphereHold:DisplayObject3D; public var fieldBorderInner:Cube; public var ray:Number3D; public var gameStarted:Boolean; public var soundsOn:Boolean; public var transform1:SoundTransform; public var fieldMaterial:MovieMaterial; public var overlay:MovieClip; public var ballHandler:TwoBallCollision; public var pos:Number3D; public var scoresBt:SimpleButton; public var ballWall:BallWall; public var cupDistance:Number; public var shadowMaterial:MovieMaterial; public var ballTarget:Plane; public var scoreHold:MovieClip; public var moreBt:SimpleButton; public var submitBt:SimpleButton; public var cupModelXML:XML; public var ballAr:Array; public var cupDae:Collada; public var prevPercent:Number; public var scene:Scene3D; public var globalVolume:Sound; public var stats:Stats; public var score:Number; public var ballBall:BallBall; public var playBt:SimpleButton; public var surface:MovieClip; public var i:int; public var gameSoundMc:MovieClip; public var textureAr; public var view:Viewport3D; public var sphereRadius:Number; public var renderer:BasicRenderEngine; public var cupPlane:Plane; public var fieldHeight:Number; public var cupsCollected:Number; public var fieldWidth:Number; public var playerAv:Plane; public var cupTexture:MovieClip; public var field:Plane; public var field3d:DisplayObject3D; public var fieldBorderMaterial:Array; public var midX:Number; public var tempNum:Number; public var insideFaces:int; public var maxIntroMc:MovieClip; public var sphereFaceMaterial:Array; public var ballPosX:Array; public var cupFlatMaterial:MovieMaterial; public var intersect:Number3D; public var instructBt:SimpleButton; public var maxLogo:MovieClip; public var flashTimer:Boolean; public var camera:FreeCamera3D; public var ballList:Array; public var timer:Number; public var shadows:Array; public var playerMaterial:Array; public var ballPosY:Array; public var cupAnimMc:MovieClip; public var soccer:MovieClip; public var cupAnim:Plane; public var hold3D:MovieClip; public var avatar:MovieClip; public var cameraPosition:Number3D; public var panOut:Number; public var ballRadius:Number; public var cupModel:DisplayObject3D; public var newGameBt:SimpleButton; public var area2D:Sprite; public var textMc:MovieClip; public var timerMark:Number; public var cupAnimMaterial:MovieMaterial; public var ballTargetMaterial:MovieMaterial; public var playerPos:String; public var speedLimit; public var soundBt:MovieClip; public var keyIndex; public var meezball:MovieClip; public var fieldBorder:Cube; public var frameCounter:Number; public var referencePlane:Plane3D; public var transitionMc:MovieClip; public var sphere:Array; public var cupModelMaterial:MovieMaterial; public var pointsIncrement:Number; public var mochiAdHold:MovieClip; public var longSide:MovieClip; public var ballShadow:MovieClip; public function MainTimeline(){ addFrameScript(0, frame1, 9, frame10, 19, frame20, 29, frame30, 39, frame40, 49, frame50, 59, frame60, 69, frame70, 73, frame74); } public function checkCup(){ cupDistance = getDistance(ballAr[0].x, ballAr[0].y, cupModel.x, -(cupModel.z)); if (cupDistance < 70){ cupAnimMc.gotoAndPlay(1); cupAnim.x = cupModel.x; cupAnim.z = cupModel.z; cupAnim.material = cupAnimMaterial; resetCup(); }; } public function initShadows():void{ shadowMaterial = new MovieMaterial(ballShadow, true); shadows[0] = new Plane(shadowMaterial, (ballRadius * 1.8), (ballRadius * 1.8), 4, 4); shadows[1] = new Plane(shadowMaterial, (ballRadius * 1.8), (ballRadius * 1.8), 4, 4); shadows[2] = new Plane(shadowMaterial, 40, 40, 4, 4); shadows[0].y = (shadows[1].y = (shadows[2].y = 1)); shadows[0].rotationX = (shadows[1].rotationX = (shadows[2].rotationX = -90)); sphereHold.addChild(shadows[0]); sphereHold.addChild(shadows[1]); sphereHold.addChild(shadows[2]); } public function onLogoRollout(_arg1:MouseEvent){ Mouse.hide(); } public function initPlayer():void{ playerMaterial[0] = new MovieMaterial(avatar, true); playerMaterial[0].animated = true; playerMaterial[0].interactive = false; playerMaterial[0].smooth = false; playerAv = new Plane(playerMaterial[0], 42, 64, 6, 6); playerAv.y = 30; playerAv.x = ballPosX[1]; playerAv.z = -(ballPosY[1]); sphereHold.addChild(playerAv); } public function initCupAnim():void{ cupAnimMaterial = new MovieMaterial(cupAnimMc, true); cupAnimMaterial.doubleSided = true; cupAnimMaterial.animated = true; cupAnim = new Plane(cupAnimMaterial, 90, 99, 2, 2); cupAnim.x = -5000; cupAnim.y = 59; cupAnim.z = 300; sphereHold.addChild(cupAnim); } public function onMenuRelease(_arg1:MouseEvent){ transitionMc.playFrame("mainMenu"); } function frame10(){ stop(); maxIntroMc.addEventListener(MouseEvent.CLICK, onIntroRelease); maxIntroMc.useHandCursor = true; maxIntroMc.buttonMode = true; } public function updateIntersect():void{ var _local1:Number; var _local2:*; cameraPosition = new Number3D(camera.x, camera.y, camera.z); ray = camera.unproject(view.containerSprite.mouseX, view.containerSprite.mouseY); ray = Number3D.add(ray, cameraPosition); intersect = new Number3D(); intersect = referencePlane.getIntersectionLineNumbers(cameraPosition, ray); _local1 = 120; if (intersect.x < (-400 + (_local1 / 2))){ intersect.x = (-400 + (_local1 / 2)); } else { if (intersect.x > (400 - (_local1 / 2))){ intersect.x = (400 - (_local1 / 2)); }; }; if (intersect.z < (-800 + _local1)){ intersect.z = (-800 + (_local1 / 2)); } else { if (intersect.z > (800 - _local1)){ intersect.z = (800 - _local1); }; }; ballTarget.x = (ballTarget.x + ((intersect.x - ballTarget.x) / 3)); ballTarget.z = (ballTarget.z + ((intersect.z - ballTarget.z) / 3)); ballAr[keyIndex].vx = (ballAr[keyIndex].vx + ((intersect.x - ballAr[keyIndex].x) / 110)); ballAr[keyIndex].vy = (ballAr[keyIndex].vy + ((-(intersect.z) - ballAr[keyIndex].y) / 110)); _local2 = getDistance((ballAr[keyIndex].x + ballAr[keyIndex].vx), (ballAr[keyIndex].y + ballAr[keyIndex].vy), ballAr[keyIndex].x, ballAr[keyIndex].y); if (_local2 > speedLimit){ do { ballAr[keyIndex].vx = (ballAr[keyIndex].vx * 0.95); ballAr[keyIndex].vy = (ballAr[keyIndex].vy * 0.95); _local2 = getDistance((ballAr[keyIndex].x + ballAr[keyIndex].vx), (ballAr[keyIndex].y + ballAr[keyIndex].vy), ballAr[keyIndex].x, ballAr[keyIndex].y); } while (_local2 > speedLimit); }; } public function nextLevel(){ if (gameOver == false){ flashTimer = true; flashCounter = 0; cupsCollected++; pointsIncrement = (((timer / timerMark) * (120 - timerMark)) * 20); pointsIncrement = Math.round(pointsIncrement); overlay.pointsUp.points = (("+" + pointsIncrement) + " points"); overlay.pointsUp.play(); score = (score + pointsIncrement); if (timerMark > 15){ timer = (timerMark = (timerMark - 5)); if (timer < 15){ overlay.timerMc.textMc.dynamicText.textColor = 16644936; } else { overlay.timerMc.textMc.dynamicText.textColor = 0xFFFFFF; }; } else { timer = (timerMark = timerMark); }; overlay.timerMc.textMc.dynamicText.text = timer; frameCounter = 31; overlay.timerMc.textMc.dynamicText.text = timer; overlay.scoreMc.textMc.dynamicText.text = score; overlay.cupsMc.textMc.dynamicText.text = cupsCollected; speedLimit = (speedLimit + 1.2); }; } public function resetCup(){ do { cupModel.x = ((Math.random() * 740) - 370); cupModel.z = ((Math.random() * 1200) - 600); cupDistance = getDistance(ballAr[0].x, ballAr[0].y, cupModel.x, -(cupModel.z)); } while (cupDistance < 50); shadows[2].x = cupModel.x; shadows[2].z = cupModel.z; nextLevel(); } function frame1(){ MochiAd.showPreGameAd({id:"ffe5cccb559bd222", res:"700x600", clip:mochiAdHold, no_bg:true, color:5012000, background:16382790, outline:0}); stop(); MochiServices.connect("ffe5cccb559bd222", root); Security.allowDomain("cdn.mochiads.com"); Security.allowDomain("www.mochiads.com"); Security.allowDomain("x.mochiads.com"); globalVolume = new Sound(); soundsOn = true; transform1 = new SoundTransform(); prevPercent = 0; } function frame20(){ stop(); newGameBt.addEventListener(MouseEvent.CLICK, onNewGameRelease); instructBt.addEventListener(MouseEvent.CLICK, onInstructRelease); scoresBt.addEventListener(MouseEvent.CLICK, onScoresRelease); soundBt.addEventListener(MouseEvent.CLICK, onSoundRelease); maxLogo.addEventListener(MouseEvent.CLICK, onLogoRelease); moreBt.addEventListener(MouseEvent.CLICK, onMoreRelease); maxLogo.useHandCursor = true; maxLogo.buttonMode = true; if (transform1.volume == 0){ soundsOn = false; transform1.volume = 0; SoundMixer.soundTransform = transform1; soundBt.gotoAndStop("off"); }; } public function onLogoRelease(_arg1:MouseEvent){ var url:String; var maxRequest:URLRequest; var e = _arg1; url = "http://www.maxgames.com"; maxRequest = new URLRequest(url); try { navigateToURL(maxRequest, "_blank"); } catch(e:Error) { trace("Error occurred!"); }; } public function modelledCup():void{ trace("3D cup confirmed"); } function frame40(){ stop(); textMc.dynamicText.text = score; submitBt.addEventListener(MouseEvent.CLICK, onSubmitRelease); playBt.addEventListener(MouseEvent.CLICK, onReplayRelease); menuBt.addEventListener(MouseEvent.CLICK, onMenuRelease); maxLogo.addEventListener(MouseEvent.CLICK, onLogoRelease); maxLogo.useHandCursor = true; maxLogo.buttonMode = true; } public function onReplayRelease(_arg1:MouseEvent){ transitionMc.playFrame("level1"); } function frame30(){ cupModelXML = new XML("<?xml version=\"1.0\" encoding=\"utf-8\"?><COLLADA xmlns=\"http://www.collada.org/2005/11/COLLADASchema\" version=\"1.4.1\"><asset><contributor><author>Brian</author><authoring_tool>3dsMax 8 - Feeling ColladaMax v3.05B.</authoring_tool><comments>ColladaMax Export Options: ExportNormals=1;ExportEPolyAsTriangles=1;ExportXRefs=1;ExportSelected=1;ExportTangents=0;ExportAnimations=1;SampleAnim=0;ExportAnimClip=0;BakeMatrices=0;ExportRelativePaths=1;AnimStart=0;AnimEnd=3.33333;</comments><source_data>file:///C:/Users/Brian/Desktop/MeezGame/3D/Cup/Cup_model.max</source_data></contributor><created>2008-08-23T06:35:32Z</created><modified>2008-08-23T06:35:33Z</modified><unit meter=\"0.0254\" name=\"inch\"/><up_axis>Z_UP</up_axis></asset><library_images><image id=\"cup_material.JPG\" name=\"cup_material_JPG\"><init_from>./cup_material.JPG</init_from></image></library_images><library_materials><material id=\"cup_mat\" name=\"cup_mat\"><instance_effect url=\"#cup_mat-fx\"/></material></library_materials><library_effects><effect id=\"cup_mat-fx\" name=\"cup_mat\"><profile_COMMON><newparam sid=\"cup_material_JPG-surface\"><surface type=\"2D\"><init_from>cup_material.JPG</init_from><format>A8R8G8B8</format></surface></newparam><newparam sid=\"cup_material_JPG-sampler\"><sampler2D><source>cup_material_JPG-surface</source><wrap_s>WRAP</wrap_s><wrap_t>WRAP</wrap_t><minfilter>NONE</minfilter><magfilter>NONE</magfilter><mipfilter>NONE</mipfilter></sampler2D></newparam><technique sid=\"common\"><blinn><ambient><color>0.588235 0.588235 0.588235 1</color></ambient><diffuse><texture texture=\"cup_material_JPG-sampler\" texcoord=\"CHANNEL1\"><extra><technique profile=\"MAYA\"><mirrorU>0</mirrorU><mirrorV>0</mirrorV><wrapU>1</wrapU><wrapV>1</wrapV><repeatU>1</repeatU><repeatV>1</repeatV><offsetU>0</offsetU><offsetV>0</offsetV><rotateUV>0</rotateUV></technique><technique profile=\"MAX3D\"><amount>1</amount></technique></extra></texture></diffuse><specular><color>0.9 0.9 0.9 1</color></specular><shininess><float>0.415939</float></shininess><reflective><color>0 0 0 1</color></reflective><reflectivity><float>1</float></reflectivity><transparent opaque=\"A_ONE\"><color>1 1 1 1</color></transparent><transparency><float>1</float></transparency></blinn><extra><technique profile=\"FCOLLADA\"><spec_level><float>0</float></spec_level><emission_level><float>0</float></emission_level></technique></extra></technique></profile_COMMON><extra><technique profile=\"MAX3D\"><faceted>0</faceted><double_sided>0</double_sided><wireframe>0</wireframe><face_map>0</face_map></technique></extra></effect></library_effects><library_geometries><geometry id=\"cup-mesh\" name=\"cup\"><mesh><source id=\"cup-mesh-positions\"><float_array id=\"cup-mesh-positions-array\" count=\"90\">0.215435 0 0.180214 0.066573 0.204891 0.180214 -0.17429 0.126629 0.180214 -0.17429 -0.126629 0.180214 0.066573 -0.204891 0.180214 -0.044931 0.032644 0.262345 -0.044931 -0.032644 0.262345 0.017162 -0.05282 0.262345 0.055538 0 0.262345 0.017162 0.05282 0.262345 -0.044931 0.032644 0.480718 -0.044931 -0.032644 0.480718 0.017162 -0.05282 0.480718 0.055538 0 0.480718 0.017162 0.05282 0.480718 -0.207401 0.150685 0.630688 -0.207401 -0.150685 0.630688 0.07922 -0.243814 0.630688 0.256361 0 0.630688 0.07922 0.243814 0.630688 -0.225681 0.163967 0.9856 -0.225681 -0.163967 0.9856 0.086202 -0.265304 0.9856 0.278957 0 0.9856 0.086202 0.265304 0.9856 -0.17429 -0.126629 0.080523 -0.17429 0.126629 0.080523 0.066573 0.204891 0.080523 0.215435 0 0.080523 0.066573 -0.204891 0.080523</float_array><technique_common><accessor source=\"#cup-mesh-positions-array\" count=\"30\" stride=\"3\"><param name=\"X\" type=\"float\"/><param name=\"Y\" type=\"float\"/><param name=\"Z\" type=\"float\"/></accessor></technique_common></source><source id=\"cup-mesh-normals\"><float_array id=\"cup-mesh-normals-array\" count=\"477\">-0.536003 0 0.844216 -0.536003 0 0.844216 -0.536003 0 0.844216 -0.536003 0 0.844216 -0.536003 0 0.844216 -0.536003 0 0.844216 -0.165634 -0.509769 0.844216 -0.165634 -0.509769 0.844216 -0.165634 -0.509769 0.844216 -0.165634 -0.509769 0.844216 -0.165634 -0.509769 0.844216 -0.165634 -0.509769 0.844216 0.433635 -0.315054 0.844216 0.433635 -0.315054 0.844216 0.433635 -0.315054 0.844216 0.433635 -0.315054 0.844216 0.433635 -0.315054 0.844216 0.433635 -0.315055 0.844216 0.433635 0.315055 0.844216 0.433635 0.315055 0.844216 0.433635 0.315055 0.844216 0.433635 0.315055 0.844216 0.433635 0.315055 0.844216 0.433635 0.315055 0.844216 -0.165634 0.509769 0.844216 -0.165634 0.509769 0.844216 -0.165634 0.509769 0.844216 -0.165634 0.509769 0.844216 -0.165634 0.509769 0.844216 -0.165634 0.509769 0.844216 -1 0 0 -1 0 0 -1 0 0 -1 0.000000 0 -1 0.000000 0 -1 0.000000 0 -0.309017 -0.951057 0 -0.309017 -0.951057 0 -0.309017 -0.951057 0 -0.309017 -0.951057 0 -0.309017 -0.951057 0 -0.309017 -0.951057 0 0.809017 -0.587785 0 0.809017 -0.587785 0 0.809017 -0.587785 0 0.809017 -0.587785 0 0.809017 -0.587785 0 0.809017 -0.587785 0 0.809017 0.587785 0 0.809017 0.587785 0 0.809017 0.587785 0 0.809017 0.587785 0 0.809017 0.587785 0 0.809017 0.587785 0 -0.309017 0.951056 0 -0.309017 0.951056 0 -0.309017 0.951056 0 -0.309017 0.951056 0 -0.309017 0.951056 0 -0.309017 0.951056 0 -0.678277 0 -0.734806 -0.678277 0 -0.734806 -0.678277 0 -0.734806 -0.678277 0.000000 -0.734806 -0.678277 0.000000 -0.734806 -0.678277 0.000000 -0.734806 -0.209599 -0.64508 -0.734806 -0.209599 -0.64508 -0.734806 -0.209599 -0.64508 -0.734806 -0.209599 -0.64508 -0.734806 -0.209599 -0.64508 -0.734806 -0.209599 -0.64508 -0.734806 0.548738 -0.398681 -0.734806 0.548738 -0.398681 -0.734806 0.548738 -0.398681 -0.734806 0.548738 -0.398681 -0.734806 0.548738 -0.398681 -0.734806 0.548738 -0.398681 -0.734806 0.548738 0.398681 -0.734806 0.548738 0.398681 -0.734806 0.548738 0.398681 -0.734806 0.548738 0.398681 -0.734806 0.548738 0.398681 -0.734806 0.548738 0.398681 -0.734806 -0.209599 0.64508 -0.734806 -0.209599 0.64508 -0.734806 -0.209599 0.64508 -0.734806 -0.209599 0.64508 -0.734806 -0.209599 0.64508 -0.734806 -0.209599 0.64508 -0.734806 -0.998676 0.000000 -0.051439 -0.998676 0.000000 -0.051439 -0.998676 0.000000 -0.051439 -0.998676 0.000000 -0.051439 -0.998676 0.000000 -0.051439 -0.998676 0.000000 -0.051439 -0.308608 -0.949798 -0.051439 -0.308608 -0.949798 -0.051439 -0.308608 -0.949798 -0.051439 -0.308608 -0.949798 -0.051439 -0.308608 -0.949797 -0.051439 -0.308608 -0.949798 -0.051439 0.807946 -0.587007 -0.051438 0.807946 -0.587007 -0.051438 0.807946 -0.587007 -0.051438 0.807946 -0.587007 -0.051439 0.807946 -0.587007 -0.051439 0.807946 -0.587007 -0.051439 0.807946 0.587007 -0.051439 0.807946 0.587007 -0.051439 0.807946 0.587007 -0.051439 0.807946 0.587007 -0.051439 0.807946 0.587007 -0.051439 0.807946 0.587007 -0.051439 -0.308608 0.949797 -0.051439 -0.308608 0.949797 -0.051439 -0.308608 0.949797 -0.051439 -0.308608 0.949797 -0.051439 -0.308608 0.949797 -0.051439 -0.308608 0.949797 -0.051439 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -0.309017 0.951057 0.000000 -0.309017 0.951057 0.000000 -0.309017 0.951057 0.000000 -0.309017 0.951057 0 -0.309017 0.951057 0 -0.309017 0.951057 0 0.809017 0.587785 0 0.809017 0.587785 0 0.809017 0.587785 0 0.809017 0.587785 0 0.809017 0.587785 0 0.809017 0.587785 0 0.809017 -0.587785 0 0.809017 -0.587785 0 0.809017 -0.587785 0 0.809017 -0.587785 0 0.809017 -0.587785 0 0.809017 -0.587785 0 -0.309017 -0.951057 0.000000 -0.309017 -0.951057 0.000000 -0.309017 -0.951057 0.000000 -0.309017 -0.951057 0.000000 -0.309017 -0.951057 0.000000 -0.309017 -0.951057 0.000000</float_array><technique_common><accessor source=\"#cup-mesh-normals-array\" count=\"159\" stride=\"3\"><param name=\"X\" type=\"float\"/><param name=\"Y\" type=\"float\"/><param name=\"Z\" type=\"float\"/></accessor></technique_common></source><source id=\"cup-mesh-map-channel1\"><float_array id=\"cup-mesh-map-channel1-array\" count=\"237\">0.187788 0.792124 0 0.285436 0.660601 0 0.44005 0.710838 0 0.44005 0.873409 0 0.283344 0.923646 0 0.357012 0.771168 0 0.357012 0.813079 0 0.315062 0.82603 0 0.290428 0.792124 0 0.317153 0.758218 0 0.03783 0.379792 0 0.628752 0.660891 0 0.632405 0.61914 0 0.593826 0.602765 0 0.566331 0.634395 0 0.587916 0.670319 0 0.726043 0.745465 0 0.742904 0.552746 0 0.564827 0.477157 0 0.43791 0.623159 0 0.537546 0.788982 0 0.485591 0.298171 0 0.485591 0.460742 0 0.330977 0.510979 0 0.23542 0.379457 0 0.330977 0.247934 0 0.037683 0.832069 0 0.037683 0.963592 0 0.037673 0.542586 0 0.037673 0.6972 0 0.037619 0.697329 0 0.101677 0.963592 0 0.101677 0.832069 0 0.101612 0.697329 0 0.555566 0.436265 0 0.555566 0.394354 0 0.03783 0.542363 0 0.695744 0.436265 0 0.695743 0.394354 0 0.037783 0.225113 0 0.037783 0.379727 0 0.101777 0.379727 0 0.101777 0.225113 0 0.556122 0.394408 0 0.556122 0.35397 0 0.556122 0.320064 0 0.556122 0.354549 0 0.555965 0.245726 0 0.555965 0.285585 0 0.556122 0.286158 0 0.696299 0.35397 0 0.696299 0.320064 0 0.696299 0.286158 0 0.744206 0.367761 0 0.731927 0.211736 0 0.720721 0.055625 0 0.97241 0.363639 0 0.959048 0.193861 0 0.946761 0.023998 0 0.696299 0.394408 0 0.696299 0.354549 0 0.101823 0.542363 0 0.101823 0.379792 0 0.726532 0.745944 0 0.743393 0.553226 0 0.952746 0.774294 0 0.971093 0.564588 0 0.696142 0.245726 0 0.696142 0.285585 0 0.101666 0.542586 0 0.101666 0.6972 0 0.726376 0.745744 0 0.694427 0.926935 0 0.952776 0.773749 0 0.918011 0.970911 0 0.743973 0.552207 0 0.743973 0.36822 0 0.971797 0.563941 0 0.971797 0.363738 0</float_array><technique_common><accessor source=\"#cup-mesh-map-channel1-array\" count=\"79\" stride=\"3\"><param name=\"S\" type=\"float\"/><param name=\"T\" type=\"float\"/><param name=\"P\" type=\"float\"/></accessor></technique_common></source><vertices id=\"cup-mesh-vertices\"><input semantic=\"POSITION\" source=\"#cup-mesh-positions\"/></vertices><triangles material=\"cup_mat\" count=\"53\"><input semantic=\"VERTEX\" source=\"#cup-mesh-vertices\" offset=\"0\"/><input semantic=\"NORMAL\" source=\"#cup-mesh-normals\" offset=\"1\"/><input semantic=\"TEXCOORD\" source=\"#cup-mesh-map-channel1\" offset=\"2\" set=\"1\"/><p>2 0 2 3 1 3 6 2 6 6 3 6 5 4 5 2 5 2 3 6 3 4 7 4 7 8 7 7 9 7 6 10 6 3 11 3 4 12 4 0 13 0 8 14 8 8 15 8 7 16 7 4 17 4 0 18 0 1 19 1 9 20 9 9 21 9 8 22 8 0 23 0 1 24 1 2 25 2 5 26 5 5 27 5 9 28 9 1 29 1 5 30 34 6 31 35 11 32 38 11 33 38 10 34 37 5 35 34 6 36 43 7 37 46 12 38 60 12 39 60 11 40 59 6 41 43 7 42 44 8 43 45 13 44 51 13 45 51 12 46 50 7 47 44 8 48 45 9 49 49 14 50 52 14 51 52 13 52 51 8 53 45 9 54 48 5 55 47 10 56 67 10 57 67 14 58 68 9 59 48 10 60 11 11 61 12 16 62 17 16 63 17 15 64 16 10 65 11 11 66 12 12 67 13 17 68 18 17 69 18 16 70 17 11 71 12 12 72 13 13 73 14 18 74 19 18 75 19 17 76 18 12 77 13 13 78 14 14 79 15 19 80 20 19 81 20 18 82 19 13 83 14 14 84 15 10 85 11 15 86 16 15 87 16 19 88 20 14 89 15 15 90 63 16 91 64 21 92 66 21 93 66 20 94 65 15 95 63 16 96 75 17 97 76 22 98 78 22 99 78 21 100 77 16 101 75 17 102 53 18 103 54 23 104 57 23 105 57 22 106 56 17 107 53 18 108 54 19 109 55 24 110 58 24 111 58 23 112 57 18 113 54 19 114 72 15 115 71 20 116 73 20 117 73 24 118 74 19 119 72 28 120 24 29 121 25 25 122 21 27 123 23 28 124 24 25 125 21 26 126 22 27 127 23 25 128 21 3 129 36 2 130 10 26 131 62 26 132 62 25 133 61 3 134 36 2 135 40 1 136 39 27 137 42 27 138 42 26 139 41 2 140 40 1 141 27 0 142 26 28 143 32 28 144 32 27 145 31 1 146 27 0 147 26 4 148 30 29 149 33 29 150 33 28 151 32 0 152 26 4 153 29 3 154 28 25 155 69 25 156 69 29 157 70 4 158 29</p></triangles></mesh></geometry></library_geometries><library_visual_scenes><visual_scene id=\"Cup_model.max\" name=\"Cup_model_max\"><node id=\"cup-node\" name=\"cup\" type=\"NODE\"><translate>0 0 -0.253936</translate><rotate>0 0 -1 -17.9676</rotate><scale>0.505876 0.505876 0.505876</scale><instance_geometry url=\"#cup-mesh\"><bind_material><technique_common><instance_material symbol=\"cup_mat\" target=\"#cup_mat\"><bind_vertex_input semantic=\"CHANNEL1\" input_semantic=\"TEXCOORD\" input_set=\"1\"/></instance_material></technique_common></bind_material></instance_geometry></node><extra><technique profile=\"FCOLLADA\"><start_time>0</start_time><end_time>3.33333</end_time></technique></extra><extra><technique profile=\"MAX3D\"><frame_rate>30</frame_rate></technique></extra></visual_scene></library_visual_scenes><scene><instance_visual_scene url=\"#Cup_model.max\"/></scene></COLLADA>"); ballBall = new BallBall(); ballWall = new BallWall(); fieldBorderMaterial = []; midX = (stage.stageWidth / 2); playerMaterial = []; shadows = []; speedLimit = 24; sphere = []; sphereFaceMaterial = []; sphereRadius = 30; textureAr = [soccer, meezball]; ballAr = []; ballList = []; ballRadius = 30; ballPosX = [0, 0]; ballPosY = [0, 300]; keyIndex = 1; fieldHeight = 1600; fieldWidth = 800; init3D(); init2D(); initGameplay(); maxLogo.addEventListener(MouseEvent.CLICK, onLogoRelease); maxLogo.addEventListener(MouseEvent.ROLL_OVER, onLogoRollover); maxLogo.addEventListener(MouseEvent.ROLL_OUT, onLogoRollout); maxLogo.useHandCursor = true; maxLogo.buttonMode = true; } public function initTarget():void{ ballTargetMaterial = new MovieMaterial(directionalTarget, true); ballTarget = new Plane(ballTargetMaterial, 30, 30, 4, 4); ballTarget.x = -5000; ballTarget.z = -5000; ballTarget.y = 0.5; ballTarget.rotationX = -90; sphereHold.addChild(ballTarget); } function frame50(){ stop(); playBt.addEventListener(MouseEvent.CLICK, onNewGameRelease); menuBt.addEventListener(MouseEvent.CLICK, onMenuRelease); } public function updatePlayerPos(){ var _local1:*; var _local2:*; var _local3:*; var _local4:*; cupModel.rotationY = (cupModel.rotationY + 4); if (gameStarted == false){ _local1 = "run-back"; } else { _local2 = Math.abs(ballAr[1].vx); _local3 = Math.abs(ballAr[1].vy); if (_local2 > _local3){ if (ballAr[1].vx > 0){ _local1 = "run-right"; } else { _local1 = "run-left"; }; _local4 = _local2; } else { if (_local2 < _local3){ if (ballAr[1].vy > 0){ _local1 = "run-front"; } else { _local1 = "run-back"; }; _local4 = _local3; } else { _local1 = "run-back"; }; }; if (((!((_local1 == playerPos))) || (!(playerPos)))){ playerPos = _local1; avatar.gotoAndStop(_local1); playerAv.material = playerMaterial[0]; }; }; } function frame60(){ stop(); MochiScores.showLeaderboard({boardID:"17e364a6fde226a4", clip:scoreHold, onClose:function ():void{ transitionMc.playFrame("mainMenu"); }, onError:function ():void{ transitionMc.playFrame("mainMenu"); }, numScores:10, res:"330x275"}); } public function rootOnEnterFrame(_arg1:Event):void{ updateCamera(); updateIntersect(); updatePlayerPos(); updateTimer(); if ((((gameStarted == true)) && ((gameOver == false)))){ checkCup(); }; updateRadar(); } public function initSphere(_arg1, _arg2, _arg3):void{ sphereFaceMaterial[_arg3] = new MovieMaterial(textureAr[_arg3], true); sphereFaceMaterial[_arg3].interactive = false; sphereFaceMaterial[_arg3].smooth = false; if (_arg3 == 1){ sphereFaceMaterial[_arg3].animated = false; } else { sphereFaceMaterial[_arg3].animated = false; }; sphere[_arg3] = new Sphere(sphereFaceMaterial[_arg3], sphereRadius, 10, 10); sphere[_arg3].x = _arg1; sphere[_arg3].y = ballRadius; sphere[_arg3].z = -(_arg2); shadows[_arg3].x = _arg1; shadows[_arg3].z = -(_arg2); sphereHold.addChild(sphere[_arg3]); } function frame70(){ stop(); MochiScores.showLeaderboard({boardID:"17e364a6fde226a4", score:score, clip:scoreHold, onClose:function ():void{ transitionMc.playFrame("mainMenu"); }, onError:function ():void{ transitionMc.playFrame("mainMenu"); }, numScores:10, previewScores:true, res:"330x250"}); } public function initCup():void{ cupModelMaterial = new MovieMaterial(cupTexture); cupModelMaterial.doubleSided = true; cupList = new MaterialsList(); cupList.addMaterial(cupModelMaterial, "cup_mat"); cupModel = new Collada(cupModelXML, cupList, 1, true, this); cupModel.x = 0; cupModel.y = 40; cupModel.z = 300; sphereHold.addChild(cupModel); shadows[2].x = cupModel.x; shadows[2].z = cupModel.z; } function frame74(){ stop(); transitionMc.playFrame("mainMenu"); } public function onLogoRollover(_arg1:MouseEvent){ Mouse.show(); } public function onScoresRelease(_arg1:MouseEvent){ transitionMc.playFrame("leaderboard"); } public function onSubmitRelease(_arg1:MouseEvent){ transitionMc.playFrame("submit"); } public function updateCamera(){ camera.x = (camera.x + (((ballAr[keyIndex].x * 1.2) - camera.x) / 6)); panOut = ((Math.abs(camera.x) / 480) * 80); camera.z = (camera.z + (((((ballAr[keyIndex].y * -0.5) - 1800) + panOut) - camera.z) / 6)); camera.rotationY = ((-(camera.x) / 550) * 10); renderer.renderScene(scene, camera, view); } public function initGameplay():void{ cupsCollected = 0; flashCounter = 0; flashTimer = false; frameCounter = 31; gameStarted = false; gameOver = false; pointsIncrement = 0; score = 0; timer = 3; timerMark = 60; overlay.timerMc.textMc.dynamicText.text = timer; overlay.scoreMc.textMc.dynamicText.text = score; overlay.cupsMc.textMc.dynamicText.text = cupsCollected; SoundMixer.stopAll(); gameSoundMc.gotoAndStop("normal"); gameSoundMc.curSound = "normal"; overlay.readyGo.gotoAndPlay(2); } public function initSphereHold():void{ sphereHold = new DisplayObject3D(); sphereHold.y = 1; sphereHold.useOwnContainer = true; scene.addChild(sphereHold); } public function initBalls(){ ballAr[0] = new TitanBallObject(ballPosX[0], ballPosY[0], ballRadius, ((-(fieldHeight) / 2) + 100), (fieldWidth / 2), ((fieldHeight / 2) + 0), (-(fieldWidth) / 2), 0, 200, this, true); initSphere(ballPosX[0], ballPosY[0], 0); area2D.addChild(ballAr[0]); ballList.push(ballAr[0]); ballAr[keyIndex] = new TitanBallObject(ballPosX[1], ballPosY[1], ballRadius, ((-(fieldHeight) / 2) + 100), (fieldWidth / 2), ((fieldHeight / 2) + 0), (-(fieldWidth) / 2), 1, 400, this, false, true); initSphere(ballPosX[1], ballPosY[1], 1); area2D.addChild(ballAr[1]); ballList.push(ballAr[1]); } public function getDistance(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):Number{ tempNum = (((_arg3 - _arg1) * (_arg3 - _arg1)) + ((_arg4 - _arg2) * (_arg4 - _arg2))); tempNum = Math.sqrt(tempNum); return (tempNum); } public function onSoundRelease(_arg1:MouseEvent){ if (soundsOn == true){ soundsOn = false; transform1.volume = 0; SoundMixer.soundTransform = transform1; soundBt.gotoAndStop("off"); } else { soundsOn = true; transform1.volume = 1; SoundMixer.soundTransform = transform1; soundBt.gotoAndStop("on"); }; } public function onIntroRelease(_arg1:MouseEvent){ var url:String; var maxRequest:URLRequest; var e = _arg1; url = "http://www.maxgames.com"; maxRequest = new URLRequest(url); try { navigateToURL(maxRequest, "_blank"); } catch(e:Error) { trace("Error occurred!"); }; } public function init3D():void{ initView(); initField(); initSphereHold(); initShadows(); initTarget(); initPlayer(); initCup(); initCupAnim(); addEventListener(Event.ENTER_FRAME, rootOnEnterFrame); Mouse.hide(); } public function onInstructRelease(_arg1:MouseEvent){ transitionMc.playFrame("instructions"); } public function init2D(){ area2D = new Sprite(); area2D.x = (stage.stageWidth / 2); area2D.y = (stage.stageHeight / 2); initBalls(); } public function onMoreRelease(_arg1:MouseEvent){ var url:String; var maxRequest:URLRequest; var e = _arg1; url = "http://www.maxgames.com"; maxRequest = new URLRequest(url); try { navigateToURL(maxRequest, "_blank"); } catch(e:Error) { trace("Error occurred!"); }; } public function onNewGameRelease(_arg1:MouseEvent){ transitionMc.playFrame("level1"); } public function updateRadar(){ overlay.radar.soccer.x = ((ballAr[0].x * 0.085) - 5); overlay.radar.soccer.y = ((ballAr[0].y * 0.06) - 5); overlay.radar.feez.x = ((ballAr[1].x * 0.085) - 5); overlay.radar.feez.y = ((ballAr[1].y * 0.06) - 5); overlay.radar.star.x = ((cupModel.x * 0.085) - 5); overlay.radar.star.y = ((cupModel.z * -0.06) - 5); } public function initField():void{ fieldMaterial = new MovieMaterial(surface); fieldMaterial.animated = false; fieldMaterial.interactive = false; fieldMaterial.smooth = false; fieldMaterial.precise = false; field = new Plane(fieldMaterial, fieldWidth, fieldHeight, 6, 6); field.useOwnContainer = true; field.x = 0; field.y = -1; field.z = 0; field.rotationX = -90; scene.addChild(field); field3d = new DisplayObject3D(); field3d.useOwnContainer = true; insideFaces = Cube.NONE; excludeFaces = (Cube.TOP + Cube.BOTTOM); fieldBorderMaterial[0] = new MovieMaterial(longSide); fieldBorderMaterial[0].tiled = true; fieldBorderMaterial[0].maxU = 10; fieldBorderMaterial[0].maxV = 1; fieldBorderMaterial[1] = new MovieMaterial(shortSide); fieldBorderMaterial[1].tiled = true; fieldBorderMaterial[1].maxU = 6; fieldBorderMaterial[1].maxV = 1; fieldBorderMaterial[1].smooth = true; fieldBorder = new Cube(new MaterialsList({front:fieldBorderMaterial[1], back:fieldBorderMaterial[1], left:fieldBorderMaterial[0], right:fieldBorderMaterial[0], top:fieldBorderMaterial[0], bottom:fieldBorderMaterial[1]}), 800, 1600, 15, 2, 4, 2, insideFaces, excludeFaces); insideFaces = (((Cube.FRONT + Cube.BACK) + Cube.LEFT) + Cube.RIGHT); fieldBorderInner = new Cube(new MaterialsList({front:fieldBorderMaterial[1], back:fieldBorderMaterial[1], left:fieldBorderMaterial[0], right:fieldBorderMaterial[0], top:fieldBorderMaterial[0], bottom:fieldBorderMaterial[1]}), 798, 1598, 15, 2, 4, 2, insideFaces, excludeFaces); fieldBorder.x = 0; fieldBorder.y = 6; fieldBorder.addChild(fieldBorderInner); field3d.addChild(fieldBorder); scene.addChild(field3d); } public function initView():void{ view = new Viewport3D(stage.stageWidth, stage.stageHeight, true, true); scene = new Scene3D(); camera = new FreeCamera3D(11); renderer = new BasicRenderEngine(); hold3D.addChild(view); camera.zoom = 48; camera.focus = 41; camera.y = 600; camera.rotationX = -20; view.containerSprite.sortMode = ViewportLayerSortMode.INDEX_SORT; referencePlane = new Plane3D(); referencePlane.setNormalAndPoint(new Number3D(0, 1, 0), new Number3D(0, 0, 0)); } public function updateTimer(){ frameCounter--; if (frameCounter == 0){ timer--; overlay.timerMc.textMc.dynamicText.text = timer; if ((((timer == 0)) && ((gameStarted == true)))){ gameOver = true; overlay.fulltime.gotoAndPlay(2); } else { if ((((timer == 0)) && ((gameStarted == false)))){ ballHandler = new TwoBallCollision(ballList, sphere, sphereRadius, view, sphereHold, playerAv, shadows, this); gameStarted = true; timer = 90; timerMark = 90; frameCounter = 31; flashTimer = true; overlay.timerMc.textMc.dynamicText.text = timer; } else { frameCounter = 31; }; }; }; if ((((((timer <= 10)) && (!((gameSoundMc.curSound == "fast"))))) && ((gameStarted == true)))){ SoundMixer.stopAll(); gameSoundMc.gotoAndStop("fast"); gameSoundMc.curSound = "fast"; overlay.timerMc.textMc.dynamicText.textColor = 16644936; } else { if ((((((timer > 10)) && (!((gameSoundMc.curSound == "normal"))))) && ((gameStarted == true)))){ SoundMixer.stopAll(); gameSoundMc.gotoAndStop("normal"); gameSoundMc.curSound = "normal"; overlay.timerMc.textMc.dynamicText.textColor = 0xFFFFFF; }; }; if (flashTimer == true){ flashCounter++; if ((flashCounter % 5) == 0){ if (overlay.timerMc.textMc.alpha == 1){ overlay.timerMc.textMc.alpha = 0; } else { overlay.timerMc.textMc.alpha = 1; }; if (flashCounter >= 60){ flashCounter = 0; flashTimer = false; }; }; } else { overlay.timerMc.textMc.alpha = 1; }; } } }//package Q_fla
Section 124
//maxGameIntro_7 (Q_fla.maxGameIntro_7) package Q_fla { import flash.display.*; import flash.events.*; import flash.geom.*; import flash.utils.*; import flash.media.*; import flash.net.*; import flash.text.*; import flash.system.*; import adobe.utils.*; import flash.accessibility.*; import flash.errors.*; import flash.external.*; import flash.filters.*; import flash.printing.*; import flash.ui.*; import flash.xml.*; public dynamic class maxGameIntro_7 extends MovieClip { public function maxGameIntro_7(){ addFrameScript(214, frame215); } function frame215(){ stop(); MovieClip(this.parent).transitionMc.playFrame("mainMenu"); } } }//package Q_fla
Section 125
//pointsUp_57 (Q_fla.pointsUp_57) package Q_fla { import flash.display.*; import flash.events.*; import flash.geom.*; import flash.utils.*; import flash.media.*; import flash.net.*; import flash.text.*; import flash.system.*; import adobe.utils.*; import flash.accessibility.*; import flash.errors.*; import flash.external.*; import flash.filters.*; import flash.printing.*; import flash.ui.*; import flash.xml.*; public dynamic class pointsUp_57 extends MovieClip { public var points; public var textMc:MovieClip; public function pointsUp_57(){ addFrameScript(0, frame1, 1, frame2); } function frame1(){ stop(); } function frame2(){ textMc.dynamicText.text = points; } } }//package Q_fla
Section 126
//radar_58 (Q_fla.radar_58) package Q_fla { import flash.display.*; public dynamic class radar_58 extends MovieClip { public var soccer:MovieClip; public var star:MovieClip; public var feez:MovieClip; } }//package Q_fla
Section 127
//readyGo_56 (Q_fla.readyGo_56) package Q_fla { import flash.display.*; import flash.events.*; import flash.geom.*; import flash.utils.*; import flash.media.*; import flash.net.*; import flash.text.*; import flash.system.*; import adobe.utils.*; import flash.accessibility.*; import flash.errors.*; import flash.external.*; import flash.filters.*; import flash.printing.*; import flash.ui.*; import flash.xml.*; public dynamic class readyGo_56 extends MovieClip { public var textMc:MovieClip; public function readyGo_56(){ addFrameScript(0, frame1, 1, frame2, 54, frame55); } function frame1(){ stop(); } function frame2(){ textMc.dynamicText.text = "Ready"; } function frame55(){ textMc.dynamicText.text = "Go"; } } }//package Q_fla
Section 128
//scoreMc_53 (Q_fla.scoreMc_53) package Q_fla { import flash.display.*; public dynamic class scoreMc_53 extends MovieClip { public var textMc:MovieClip; } }//package Q_fla
Section 129
//soundBtn_17 (Q_fla.soundBtn_17) package Q_fla { import flash.display.*; public dynamic class soundBtn_17 extends MovieClip { public function soundBtn_17(){ addFrameScript(0, frame1, 4, frame5); } function frame1(){ stop(); } function frame5(){ stop(); } } }//package Q_fla
Section 130
//star_fade_49 (Q_fla.star_fade_49) package Q_fla { import flash.display.*; public dynamic class star_fade_49 extends MovieClip { public function star_fade_49(){ addFrameScript(34, frame35); } function frame35(){ stop(); } } }//package Q_fla
Section 131
//timerMc_51 (Q_fla.timerMc_51) package Q_fla { import flash.display.*; public dynamic class timerMc_51 extends MovieClip { public var textMc:MovieClip; } }//package Q_fla
Section 132
//transition_6 (Q_fla.transition_6) package Q_fla { import flash.display.*; import flash.events.*; import flash.geom.*; import flash.utils.*; import flash.media.*; import flash.net.*; import flash.text.*; import flash.system.*; import adobe.utils.*; import flash.accessibility.*; import flash.errors.*; import flash.external.*; import flash.filters.*; import flash.printing.*; import flash.ui.*; import flash.xml.*; public dynamic class transition_6 extends MovieClip { public var targetFrame:String; public function transition_6(){ addFrameScript(0, frame1, 15, frame16, 39, frame40); } function frame16(){ SoundMixer.stopAll(); MovieClip(this.parent).gotoAndStop(targetFrame); if (targetFrame == "gameOver"){ MovieClip(this.parent).removeEventListener(Event.ENTER_FRAME, MovieClip(this.parent).rootOnEnterFrame); Mouse.show(); }; } function frame1(){ this.y = -3000; stop(); } public function playFrame(_arg1:String){ targetFrame = _arg1; this.y = 300; trace(targetFrame); play(); } function frame40(){ gotoAndStop(1); } } }//package Q_fla
Section 133
//Collada (titanball.Collada) package titanball { import org.papervision3d.core.math.*; import org.papervision3d.core.proto.*; import org.papervision3d.materials.utils.*; import org.papervision3d.core.geom.renderables.*; import flash.events.*; import org.papervision3d.objects.*; import org.papervision3d.core.geom.*; import org.papervision3d.events.*; import org.papervision3d.*; import flash.net.*; import org.papervision3d.materials.*; public class Collada extends DisplayObject3D { public var loaded:Boolean; private var _container:DisplayObjectContainer3D; private var COLLADA:XML; private var _geometries:Object; private var _loader:URLLoader; private var _yUp:Boolean; private var _scaling:Number; private var _filename:String; public var materialsToLoad:int;// = 0 public var localArea; private var _materials:MaterialsList; private var _doubleSidedMaterials:Boolean;// = false private static var NODESECTION:String = "node"; private static var SKEWNODE:String = "skew"; private static var INPUTTAG:String = "input"; private static var GEOMETRYSECTION:String = "geometry"; private static var VERTEXINPUT:String = "VERTEX"; private static var INSTANCENODE:String = "instance"; private static var POLYGON:String = "p"; private static var PERSPECTIVENODE:String = "perspective"; private static var POSITIONINPUT:String = "POSITION"; private static var LOOKATNODE:String = "lookat"; private static var ACCESSORSECTION:String = "accessor"; private static var UVINPUT:String = "UV"; private static var NORMALINPUT:String = "NORMAL"; private static var POLYGONSSECTION:String = "polygons"; private static var INSTACESCENE:String = "instance_visual_scene"; private static var TRANSLATENODE:String = "translate"; private static var SCALENODE:String = "scale"; private static var MESHSECTION:String = "mesh"; private static var VERTICESSECTION:String = "vertices"; private static var TANGENTINPUT:String = "TANGENT"; private static var MATERIALSECTION:String = "material"; private static var toDEGREES:Number = 57.2957795130823; public static var DEFAULT_SCALING:Number = 1; private static var SOURCESECTION:String = "source"; private static var TEXCOORDINPUT:String = "TEXCOORD"; private static var LIBRARYSECTION:String = "library"; private static var MATRIXNODE:String = "matrix"; private static var ROTATENODE:String = "rotate"; private static var SCENESECTION:String = "scene"; private static var INTERNAL_SCALING:Number = 100; private static var CAMERAPREFAB:String = "camera"; private static var ARRAYSECTION:String = "array"; private static var PARAMTAG:String = "param"; private static var COLLADASECTION:String = "COLLADA"; private static var ASSETSECTION:String = "asset"; private static var LIGHTPREFAB:String = "light"; private static var toRADIANS:Number = 0.0174532925199433; public function Collada(_arg1, _arg2:MaterialsList=null, _arg3:Number=1, _arg4:Boolean=false, _arg5=null){ materialsToLoad = 0; _doubleSidedMaterials = false; super(null, null); localArea = _arg5; this._materials = ((_arg2) || (new MaterialsList())); this._container = this; this.loaded = false; this._scaling = ((_arg3) || (DEFAULT_SCALING)); this._scaling = (this._scaling * INTERNAL_SCALING); this._doubleSidedMaterials = _arg4; this._geometries = new Object(); if ((_arg1 is XML)){ this.COLLADA = _arg1; this._filename = ""; buildCollada(); } else { if ((_arg1 is String)){ this._filename = _arg1; loadCollada(); }; }; } private function handleSecurityLoadError(_arg1:SecurityErrorEvent):void{ trace("COLLADA file security load error", _arg1.text); dispatchEvent(new FileLoadEvent(FileLoadEvent.SECURITY_LOAD_ERROR, this._filename, 0, 0, _arg1.text)); } private function getId(_arg1:String):String{ return (_arg1.split("#")[1]); } public function getMaterialsList():MaterialsList{ return (_materials); } private function onMaterialLoadError(_arg1:FileLoadEvent):void{ var _local2:BitmapFileMaterial; _local2 = (_arg1.target as BitmapFileMaterial); trace(("Colllada failed to load material : " + _local2)); materialsToLoad--; if (materialsToLoad == 0){ dispatchEvent(new FileLoadEvent(FileLoadEvent.COLLADA_MATERIALS_DONE)); }; } private function onComplete(_arg1:Event):void{ this.COLLADA = new XML(this._loader.data); buildCollada(); localArea.modelledCup(); } private function handleIOError(_arg1:IOErrorEvent):void{ trace("COLLADA file load error", _arg1.text); dispatchEvent(new FileLoadEvent(FileLoadEvent.LOAD_ERROR, this._filename, 0, 0, _arg1.text)); } private function parseGeometry(_arg1:XML, _arg2:DisplayObject3D, _arg3:Matrix3D=null, _arg4:Object=null):void{ var _local5:Matrix3D; var _local6:Object; var _local7:Array; var _local8:Boolean; var _local9:XML; var _local10:Array; var _local11:XML; var _local12:Array; var _local13:Number; var _local14:String; var _local15:Number; var _local16:Object; var _local17:Number; var _local18:String; var _local19:Number; _local5 = ((Matrix3D.clone(_arg3)) || (Matrix3D.IDENTITY)); _local6 = new Object(); _local6.name = _arg1.@id; _local7 = (_local6.triangles = new Array()); _local8 = (_arg1.mesh.triangles.length() > 1); for each (_local9 in _arg1.mesh.triangles) { _local10 = new Array(); for each (_local11 in _local9.input) { _local6[_local11.@semantic] = deserialize(_local11, _arg1); _local10.push(_local11.@semantic); }; _local12 = _local9.p.split(" "); _local13 = _local9.@count; _local14 = _local9.@material; addMaterial(_arg2, _local14, _arg4); _local15 = 0; while (_local15 < _local13) { _local16 = new Object(); _local17 = 0; while (_local17 < 3) { _local19 = 0; while ((_local18 = _local10[_local19])) { if (!_local16[_local18]){ _local16[_local18] = new Array(); }; _local16[_local18].push(Number(_local12.shift())); _local19++; }; _local16["material"] = _local14; _local17++; }; _local7.push(_local16); _local15++; }; }; buildObject(_local6, _arg2, _local5); } private function handleLoadProgress(_arg1:ProgressEvent):void{ var _local2:FileLoadEvent; _local2 = new FileLoadEvent(FileLoadEvent.LOAD_PROGRESS, this._filename, _arg1.bytesLoaded, _arg1.bytesTotal); dispatchEvent(_local2); } private function onMaterialLoadComplete(_arg1:FileLoadEvent):void{ materialsToLoad--; if (materialsToLoad == 0){ materials = new MaterialsList(); dispatchEvent(new FileLoadEvent(FileLoadEvent.COLLADA_MATERIALS_DONE)); }; } private function deserialize(_arg1:XML, _arg2:XML):Array{ var output:Array; var id:String; var acc:XMLList; var floId:String; var floXML:XMLList; var floStr:String; var floats:Array; var params:Array; var par:XML; var count:int; var stride:int; var i:int; var element:Object; var j:int; var recursive:XMLList; var input = _arg1; var geo = _arg2; output = new Array(); id = input.@source.split("#")[1]; acc = geo..source.(@id == id).technique_common.accessor; if (acc != new XMLList(null)){ floId = acc.@source.split("#")[1]; floXML = COLLADA..float_array.(@id == floId); floStr = floXML.toString(); floats = floStr.split(" "); params = new Array(); for each (par in acc.param) { params.push(par.@name); }; count = acc.@count; stride = acc.@stride; i = 0; while (i < count) { element = new Object(); j = 0; while (j < stride) { element[params[j]] = floats.shift(); j = (j + 1); }; output.push(element); i = (i + 1); }; } else { recursive = geo..vertices.(@id == id)[INPUTTAG]; output = deserialize(recursive[0], geo); }; return (output); } private function parseScene(_arg1:XML):void{ var _local2:XML; for each (_local2 in _arg1.node) { parseNode(_local2, this._container); }; } private function scaleMatrix(_arg1:Array):Matrix3D{ if (this._yUp){ return (Matrix3D.scaleMatrix(_arg1[0], _arg1[1], _arg1[2])); }; return (Matrix3D.scaleMatrix(_arg1[0], _arg1[2], _arg1[1])); } private function buildObject(_arg1:Object, _arg2:DisplayObject3D, _arg3:Matrix3D=null):void{ var _local4:Array; var _local5:Number; var _local6:Number; var _local7:Array; var _local8:Number; var _local9:int; var _local10:Array; var _local11:Array; var _local12:Object; var _local13:Number; var _local14:Number; var _local15:Number; var _local16:Array; var _local17:Vertex3D; var _local18:Vertex3D; var _local19:Vertex3D; var _local20:Array; var _local21:Array; var _local22:Array; var _local23:Array; var _local24:NumberUV; var _local25:NumberUV; var _local26:NumberUV; var _local27:String; var _local28:Triangle3D; _arg3 = ((_arg3) || (Matrix3D.IDENTITY)); _arg2.addGeometry(new GeometryObject3D()); _local4 = (_arg2.geometry.vertices = new Array()); _local5 = this._scaling; _local6 = _local4.length; _local7 = _arg1.VERTEX; _local8 = _local7.length; _local9 = 0; while (_local9 < _local8) { _local12 = _local7[_local9]; _local13 = (Number(_local12.X) * _local5); _local14 = (Number(_local12.Y) * _local5); _local15 = (Number(_local12.Z) * _local5); if (this._yUp){ _local4.push(new Vertex3D(-(_local13), _local14, _local15)); } else { _local4.push(new Vertex3D(_local13, _local15, _local14)); }; _local9++; }; _local10 = (_arg2.geometry.faces = new Array()); _local11 = _arg1.triangles; _local8 = _local11.length; _local9 = 0; while (_local9 < _local8) { _local16 = _local11[_local9].VERTEX; _local17 = _local4[(_local6 + _local16[0])]; _local18 = _local4[(_local6 + _local16[1])]; _local19 = _local4[(_local6 + _local16[2])]; _local20 = [_local17, _local18, _local19]; _local21 = _arg1.TEXCOORD; _local22 = _local11[_local9].TEXCOORD; if (((_local22) && (_local21))){ _local24 = new NumberUV(_local21[_local22[0]].S, _local21[_local22[0]].T); _local25 = new NumberUV(_local21[_local22[1]].S, _local21[_local22[1]].T); _local26 = new NumberUV(_local21[_local22[2]].S, _local21[_local22[2]].T); _local23 = [_local24, _local25, _local26]; } else { _local23 = null; }; _local27 = ((_local11[_local9].material) || (null)); _local28 = new Triangle3D(_arg2, _local20, _materials.getMaterialByName(_local27), _local23); _local10.push(_local28); _local9++; }; _arg2.geometry.ready = true; _arg3.n14 = (_arg3.n14 * _local5); _arg3.n24 = (_arg3.n24 * _local5); _arg3.n34 = (_arg3.n34 * _local5); _arg2.visible = true; } private function bakedMatrix(_arg1:Matrix3D):Matrix3D{ _arg1.n14 = (_arg1.n14 * _scaling); _arg1.n24 = (_arg1.n24 * _scaling); _arg1.n34 = (_arg1.n34 * _scaling); return (_arg1); } private function parseNode(_arg1:XML, _arg2:DisplayObjectContainer3D):void{ var matrix:Matrix3D; var newNode:DisplayObject3D; var instance:DisplayObject3D; var children:XMLList; var totalChildren:int; var i:int; var child:XML; var bindMaterial:Object; var instance_material:XML; var geometry:XML; var geoId:String; var geo:XML; var node = _arg1; var parent = _arg2; matrix = Matrix3D.IDENTITY; if (String(node.instance_geometry) == ""){ newNode = new DisplayObject3D(node.@name); } else { newNode = new TriangleMesh3D(null, null, null, node.@name); }; instance = parent.addChild(newNode, node.@name); children = node.children(); totalChildren = children.length(); i = 0; while (i < totalChildren) { child = children[i]; switch (child.name().localName){ case "translate": matrix = Matrix3D.multiply(matrix, translateMatrix(getArray(child))); break; case "rotate": matrix = Matrix3D.multiply(matrix, rotateMatrix(getArray(child))); break; case "scale": matrix = Matrix3D.multiply(matrix, scaleMatrix(getArray(child))); break; case "matrix": matrix = Matrix3D.multiply(matrix, bakedMatrix(new Matrix3D(getArray(child)))); break; case "node": parseNode(child, instance); break; case "instance_geometry": bindMaterial = new Object(); for each (instance_material in child..instance_material) { bindMaterial[instance_material.@symbol] = instance_material.@target.split("#")[1]; }; for each (geometry in child) { geoId = getId(geometry.@url); geo = COLLADA.library_geometries.geometry.(@id == geoId)[0]; parseGeometry(geo, instance, Matrix3D.clone(matrix), bindMaterial); }; break; }; i = (i + 1); }; instance.copyTransform(matrix); } private function loadCollada():void{ this._loader = new URLLoader(); this._loader.addEventListener(Event.COMPLETE, onComplete); this._loader.addEventListener(IOErrorEvent.IO_ERROR, handleIOError); this._loader.addEventListener(SecurityErrorEvent.SECURITY_ERROR, handleSecurityLoadError); this._loader.addEventListener(ProgressEvent.PROGRESS, handleLoadProgress); this._loader.load(new URLRequest(this._filename)); } private function getArray(_arg1:String):Array{ var _local2:Array; var _local3:Array; var _local4:Number; var _local5:Number; _local2 = _arg1.split(" "); _local3 = new Array(); _local4 = _local2.length; _local5 = 0; while (_local5 < _local4) { _local3[_local5] = Number(_local2[_local5]); _local5++; }; return (_local3); } private function translateMatrix(_arg1:Array):Matrix3D{ if (this._yUp){ return (Matrix3D.translationMatrix((-(_arg1[0]) * this._scaling), (_arg1[1] * this._scaling), (_arg1[2] * this._scaling))); }; return (Matrix3D.translationMatrix((_arg1[0] * this._scaling), (_arg1[2] * this._scaling), (_arg1[1] * this._scaling))); } private function getTexture(_arg1:String):String{ var filename:String; var material:XML; var effectId:String; var effect:XML; var textureId:String; var sampler:XML; var imageId:String; var image:XML; var sourceId:String; var source:XML; var name = _arg1; filename = null; material = COLLADA.library_materials.material.(@id == name)[0]; if (material){ effectId = getId(material.instance_effect.@url); effect = COLLADA.library_effects.effect.(@id == effectId)[0]; if (effect..texture.length() == 0){ return (null); }; textureId = effect..texture[0].@texture; sampler = effect..newparam.(@sid == textureId)[0]; imageId = textureId; if (sampler){ sourceId = sampler..source[0]; source = effect..newparam.(@sid == sourceId)[0]; imageId = source..init_from[0]; }; image = COLLADA.library_images.image.(@id == imageId)[0]; filename = image.init_from; if (filename.substr(0, 2) == "./"){ filename = filename.substr(2); }; }; return (filename); } private function addMaterial(_arg1:DisplayObject3D, _arg2:String, _arg3:Object):void{ var _local4:MaterialObject3D; var _local5:String; var _local6:String; if (this._materials){ _local4 = this._materials.getMaterialByName(_arg2); } else { _materials = new MaterialsList(); }; if (!_local4){ _local5 = this._filename.slice(0, (this._filename.lastIndexOf("/") + 1)); _local6 = getTexture(_arg3[_arg2]); if (_local6){ materialsToLoad++; _local4 = new BitmapFileMaterial((_local5 + _local6)); _local4.addEventListener(FileLoadEvent.LOAD_COMPLETE, onMaterialLoadComplete); _local4.addEventListener(FileLoadEvent.LOAD_ERROR, onMaterialLoadError); } else { _local4 = MaterialObject3D.DEFAULT; Papervision3D.log((("Collada material " + _arg2) + " not found.")); }; _local4.name = _arg2; _local4.doubleSided = _doubleSidedMaterials; }; _materials.addMaterial(_local4); if (!_arg1.materials){ _arg1.materials = new MaterialsList(); }; _local4.registerObject(_arg1); _arg1.materials.addMaterial(_local4, _arg2); } private function buildCollada():void{ var sceneId:String; var scene:XML; var fileEvent:FileLoadEvent; materialsToLoad = 0; this._yUp = (COLLADA.asset.up_axis == "Y_UP"); sceneId = getId(COLLADA.scene.instance_visual_scene.@url); scene = COLLADA.library_visual_scenes.visual_scene.(@id == sceneId)[0]; parseScene(scene); fileEvent = new FileLoadEvent(FileLoadEvent.LOAD_COMPLETE, _filename); this.dispatchEvent(fileEvent); this.loaded = true; } private function rotateMatrix(_arg1:Array):Matrix3D{ if (this._yUp){ return (Matrix3D.rotationMatrix(_arg1[0], _arg1[1], _arg1[2], (-(_arg1[3]) * toRADIANS))); }; return (Matrix3D.rotationMatrix(_arg1[0], _arg1[2], _arg1[1], (-(_arg1[3]) * toRADIANS))); } } }//package titanball
Section 134
//TitanBallObject (titanball.TitanBallObject) package titanball { import flash.display.*; public class TitanBallObject extends Sprite { private var rootNode; private var sinkRadius:Number; public var keyBall:Boolean; private var bottomBound:Number; private var topBound:Number; private var colorType:int; public var mass:Number; private var applyFriction:Boolean; private var radius:Number; private var leftBound:Number; private var newY:Number; private var rightBound:Number; public var vy:Number; private var newX:Number; public var vx:Number; private var friction:Number;// = 0.98 public function TitanBallObject(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:Number, _arg7:Number, _arg8:int, _arg9:Number, _arg10, _arg11:Boolean=false, _arg12:Boolean=false){ friction = 0.98; super(); initVars(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7, _arg8, _arg9, _arg10, _arg11, _arg12); initGraphic(); } public function initVars(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:Number, _arg7:Number, _arg8:int, _arg9:Number, _arg10, _arg11:Boolean, _arg12:Boolean):void{ x = _arg1; y = _arg2; radius = _arg3; bottomBound = _arg6; leftBound = _arg7; rightBound = _arg5; topBound = _arg4; colorType = _arg8; mass = _arg9; rootNode = _arg10; applyFriction = _arg11; keyBall = _arg12; if (applyFriction == false){ vx = 0; vy = -0.1; } else { vx = (vy = 0.1); }; } public function initGraphic():void{ if (((((colorType % 2) == 0)) && ((colorType > 0)))){ this.graphics.beginFill(0xFF0000, 1); } else { if (colorType > 0){ this.graphics.beginFill(0xFFFF00, 1); } else { this.graphics.beginFill(0xFF, 1); }; }; this.graphics.drawCircle(0, 0, radius); sinkRadius = (width * 0.9); } public function ballEnterFrame(_arg1:Number=0):void{ var _local2:*; var _local3:*; if (((!((vx == 0.1))) && (!((vy == 0.1))))){ x = (x + vx); y = (y + vy); if (applyFriction == true){ vx = (vx * friction); vy = (vy * friction); if ((((((((vx < 0.8)) && ((vx > -0.8)))) && ((vy < 0.8)))) && ((vy > -0.8)))){ vx = 0.1; vy = 0.1; }; } else { vx = (vx * 0.99); vy = (vy * 0.99); }; _local2 = Math.abs(vx); _local3 = Math.abs(vy); if ((((((_local2 > 5)) && ((_local3 > 5)))) && ((keyBall == false)))){ vx = (vx + ((rootNode.cupModel.x - x) / 4000)); vy = (vy + ((-(rootNode.cupModel.z) - y) / 4000)); } else { if ((((((_local2 > 15)) && ((_local3 > 15)))) && ((keyBall == true)))){ vx = (vx + ((rootNode.ballAr[0].x - x) / 100)); vy = (vy + ((rootNode.ballAr[0].y - y) / 100)); }; }; testBounds(); }; } private function testBounds():void{ if ((x + (width / 2)) > rightBound){ x = (rightBound - (width / 2)); vx = (vx * -0.75); rootNode.ballWall.play(); } else { if ((x - (width / 2)) < leftBound){ x = (leftBound + (width / 2)); vx = (vx * -0.75); rootNode.ballWall.play(); }; }; if ((y + (height / 2)) > bottomBound){ y = (bottomBound - (height / 2)); vy = (vy * -0.75); rootNode.ballWall.play(); } else { if ((y - (height / 2)) < topBound){ y = (topBound + (height / 2)); vy = (vy * -0.75); rootNode.ballWall.play(); }; }; } } }//package titanball
Section 135
//TwoBallCollision (titanball.TwoBallCollision) package titanball { import org.papervision3d.core.math.*; import flash.display.*; import flash.events.*; import org.papervision3d.view.*; public class TwoBallCollision extends Sprite { private var rotAxis:Number3D; private var distance:Number; private var tempString:String; private var targets:Array; private var rootNode; private var ball1; private var rollRotation:Quaternion; private var ball0; private var tempNum:Number; private var shadow:Array; private var vel1:Object; private var minDist:Number; private var pos:Number3D; private var pos1:Object; private var pos0:Object; private var i:int; private var pos0F:Object; private var p:int; private var spheres:Array; private var prevZ:Array; private var pos1F:Object; private var dy:Number; private var vel0:Object; private var vel1F:Object; private var prevX:Array; private var vxTotal:Number; private var dx:Number; private var dist:Number; private var sine:Number; private var holder; private var vel0F:Object; private var tempVx:Number; private var collisionAngle:Number; private var sphereRadius:Number; private var tempVz:Number; private var angle:Number; private var dif:Number3D; private var view:Viewport3D; private var player; private var cosine:Number; public function TwoBallCollision(_arg1:Array, _arg2:Array, _arg3:Number, _arg4:Viewport3D, _arg5, _arg6, _arg7:Array, _arg8){ prevX = []; prevZ = []; shadow = []; spheres = []; super(); initVars(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7, _arg8); this.addEventListener(Event.ENTER_FRAME, collisionEnterFrame); } private function setRotation(_arg1, _arg2:Number, _arg3:Number, _arg4:Number):void{ pos = new Number3D(_arg1.x, _arg1.y, _arg1.z); dif = new Number3D(-(_arg2), -(_arg3), -(_arg4)); dist = Math.sqrt(((dif.x * dif.x) + (dif.z * dif.z))); rotAxis = Number3D.cross(dif, new Number3D(0, 1, 0)); rotAxis.normalize(); rollRotation = Quaternion.createFromAxisAngle(rotAxis.x, rotAxis.y, rotAxis.z, (dist / sphereRadius)); rollRotation.normalize(); _arg1.transform.calculateMultiply3x3(rollRotation.toMatrix(), _arg1.transform); } private function getAngle(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):Number{ dx = (_arg3 - _arg1); dy = (_arg4 - _arg2); tempNum = Math.atan2(dy, dx); return (tempNum); } public function initVars(_arg1:Array, _arg2:Array, _arg3:Number, _arg4:Viewport3D, _arg5, _arg6, _arg7:Array, _arg8):void{ targets = _arg1; spheres = _arg2; sphereRadius = _arg3; view = _arg4; holder = _arg5; player = _arg6; shadow = _arg7; rootNode = _arg8; } private function collisionEnterFrame(_arg1:Event):void{ var _local2:Number; var _local3:Number; i = 0; while (i < targets.length) { prevX[i] = spheres[i].x; prevZ[i] = spheres[i].z; targets[i].ballEnterFrame(); i++; }; i = 0; while (i < (targets.length - 1)) { ball0 = targets[i]; if (ball0 != null){ p = (i + 1); while (p < targets.length) { ball1 = targets[p]; if (ball1 != null){ dx = (ball1.x - ball0.x); dy = (ball1.y - ball0.y); distance = getDistance(ball1.x, ball1.y, ball0.x, ball0.y); minDist = ((ball0.width / 2) + (ball1.width / 2)); if (distance <= minDist){ rootNode.ballBall.play(); angle = Math.atan2(dy, dx); sine = Math.sin(angle); cosine = Math.cos(angle); pos0 = {x:0, y:0}; pos1 = rotate(dx, dy, sine, cosine, true); vel0 = rotate(ball0.vx, ball0.vy, sine, cosine, true); vel1 = rotate(ball1.vx, ball1.vy, sine, cosine, true); vxTotal = (vel0.x - vel1.x); vel0.x = ((((ball0.mass - ball1.mass) * vel0.x) + ((2 * ball1.mass) * vel1.x)) / (ball0.mass + ball1.mass)); vel1.x = (vxTotal + vel0.x); _local2 = (Math.abs(vel0.x) + Math.abs(vel1.x)); _local3 = (((ball0.width / 2) + (ball1.width / 2)) - Math.abs((pos0.x - pos1.x))); pos0.x = (pos0.x + ((vel0.x / _local2) * _local3)); pos1.x = (pos1.x + ((vel1.x / _local2) * _local3)); pos0F = rotate(pos0.x, pos0.y, sine, cosine, false); pos1F = rotate(pos1.x, pos1.y, sine, cosine, false); ball1.x = (ball0.x + pos1F.x); ball1.y = (ball0.y + pos1F.y); ball0.x = (ball0.x + pos0F.x); ball0.y = (ball0.y + pos0F.y); vel0F = rotate(vel0.x, vel0.y, sine, cosine, false); vel1F = rotate(vel1.x, vel1.y, sine, cosine, false); ball0.vx = vel0F.x; ball0.vy = vel0F.y; ball1.vx = vel1F.x; ball1.vy = vel1F.y; ball0.x = (ball0.x + ball0.vx); ball0.y = (ball0.y + ball0.vy); ball1.x = (ball1.x + ball1.vx); ball1.y = (ball1.y + ball1.vy); distance = getDistance(ball1.x, ball1.y, ball0.x, ball0.y); if (distance <= minDist){ dx = (ball1.x - ball0.x); dy = (ball1.y - ball0.y); angle = Math.atan2(dy, dx); ball1.x = (ball0.x - (Math.cos(angle) * (minDist + 10))); ball1.y = (ball0.y - (Math.sin(angle) * (minDist + 10))); }; }; }; p++; }; }; i++; }; i = 0; while (i < targets.length) { if (((!((prevX[i] == targets[i].x))) || (!((prevZ[i] == -(targets[i].y)))))){ spheres[i].x = (shadow[i].x = targets[i].x); spheres[i].z = (shadow[i].z = -(targets[i].y)); tempVx = (prevX[i] - spheres[i].x); tempVz = (prevZ[i] - spheres[i].z); setRotation(spheres[i], tempVx, 0, tempVz); }; i++; }; player.x = spheres[1].x; player.z = spheres[1].z; } private function getDistance(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):Number{ tempNum = (((_arg3 - _arg1) * (_arg3 - _arg1)) + ((_arg4 - _arg2) * (_arg4 - _arg2))); tempNum = Math.sqrt(tempNum); return (tempNum); } private function rotate(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Boolean):Object{ var _local6:Object; _local6 = new Object(); if (_arg5){ _local6.x = ((_arg1 * _arg4) + (_arg2 * _arg3)); _local6.y = ((_arg2 * _arg4) - (_arg1 * _arg3)); } else { _local6.x = ((_arg1 * _arg4) - (_arg2 * _arg3)); _local6.y = ((_arg2 * _arg4) + (_arg1 * _arg3)); }; return (_local6); } } }//package titanball
Section 136
//BallBall (BallBall) package { import flash.media.*; public dynamic class BallBall extends Sound { } }//package
Section 137
//BallWall (BallWall) package { import flash.media.*; public dynamic class BallWall extends Sound { } }//package
Section 138
//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.6"); } 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")); 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

Library Items

Symbol 1 Sound {BallWall}
Symbol 2 Sound {BallBall}Used by:62 64
Symbol 3 GraphicUsed by:16 25 140 170 171
Symbol 4 BitmapUsed by:5
Symbol 5 GraphicUses:4Used by:6
Symbol 6 MovieClipUses:5Used by:16 199
Symbol 7 GraphicUsed by:16
Symbol 8 FontUsed by:9 19 58 71 81 143 175 178 183 189 197
Symbol 9 TextUses:8Used by:16
Symbol 10 BitmapUsed by:11
Symbol 11 GraphicUses:10Used by:12
Symbol 12 MovieClipUses:11Used by:16 199
Symbol 13 BitmapUsed by:14
Symbol 14 GraphicUses:13Used by:15
Symbol 15 MovieClipUses:14Used by:16 199
Symbol 16 MovieClipUses:3 6 7 9 12 15Used by:Timeline
Symbol 17 GraphicUsed by:18 62 64 83
Symbol 18 MovieClip {Q_fla.adHold_5}Uses:17Used by:Timeline
Symbol 19 EditableTextUses:8Used by:Timeline
Symbol 20 ShapeTweeningUsed by:25
Symbol 21 GraphicUsed by:25 59
Symbol 22 GraphicUsed by:25
Symbol 23 ShapeTweeningUsed by:25
Symbol 24 GraphicUsed by:25
Symbol 25 MovieClip {Q_fla.transition_6}Uses:20 3 21 22 23 24Used by:Timeline
Symbol 26 GraphicUsed by:47 48 59
Symbol 27 BitmapUsed by:28
Symbol 28 GraphicUses:27Used by:29
Symbol 29 MovieClipUses:28Used by:48
Symbol 30 GraphicUsed by:32
Symbol 31 GraphicUsed by:32
Symbol 32 MovieClip {Q_fla.freeinternetgames_9}Uses:30 31Used by:48
Symbol 33 SoundUsed by:48
Symbol 34 GraphicUsed by:46
Symbol 35 GraphicUsed by:46
Symbol 36 GraphicUsed by:46
Symbol 37 GraphicUsed by:46
Symbol 38 GraphicUsed by:46
Symbol 39 GraphicUsed by:46
Symbol 40 GraphicUsed by:46
Symbol 41 GraphicUsed by:46
Symbol 42 GraphicUsed by:46
Symbol 43 GraphicUsed by:46
Symbol 44 GraphicUsed by:46
Symbol 45 GraphicUsed by:46
Symbol 46 MovieClip {Q_fla.clip_sd88detincelle_10}Uses:34 35 36 37 38 39 40 41 42 43 44 45Used by:48
Symbol 47 MovieClipUses:26Used by:48  Timeline
Symbol 48 MovieClip {Q_fla.maxGameIntro_7}Uses:26 29 32 33 46 47Used by:Timeline
Symbol 49 BitmapUsed by:50
Symbol 50 GraphicUses:49Used by:51
Symbol 51 MovieClipUses:50Used by:Timeline
Symbol 52 BitmapUsed by:53
Symbol 53 GraphicUses:52Used by:54
Symbol 54 MovieClipUses:53Used by:Timeline
Symbol 55 GraphicUsed by:56
Symbol 56 MovieClipUses:55Used by:Timeline
Symbol 57 FontUsed by:58 65 66 68 75 76 77 142 146 148 172 173 179 184 185
Symbol 58 EditableTextUses:8 57Used by:Timeline
Symbol 59 MovieClip {Q_fla.button_rollover_16}Uses:26 21Used by:62 64
Symbol 60 GraphicUsed by:62
Symbol 61 SoundUsed by:62 152
Symbol 62 ButtonUses:17 59 60 2 61Used by:Timeline
Symbol 63 GraphicUsed by:64
Symbol 64 ButtonUses:17 59 63 2Used by:67  Timeline
Symbol 65 TextUses:57Used by:67
Symbol 66 TextUses:57Used by:67
Symbol 67 MovieClip {Q_fla.soundBtn_17}Uses:64 65 66Used by:Timeline
Symbol 68 TextUses:57Used by:Timeline
Symbol 69 GraphicUsed by:74
Symbol 70 GraphicUsed by:73
Symbol 71 TextUses:8Used by:73
Symbol 72 GraphicUsed by:73
Symbol 73 MovieClipUses:70 71 72Used by:74
Symbol 74 MovieClipUses:69 73Used by:Timeline
Symbol 75 TextUses:57Used by:Timeline
Symbol 76 TextUses:57Used by:Timeline
Symbol 77 TextUses:57Used by:Timeline
Symbol 78 BitmapUsed by:79
Symbol 79 GraphicUses:78Used by:80
Symbol 80 MovieClipUses:79Used by:Timeline
Symbol 81 TextUses:8Used by:Timeline
Symbol 82 SoundUsed by:Timeline
Symbol 83 MovieClipUses:17Used by:Timeline
Symbol 84 BitmapUsed by:85
Symbol 85 GraphicUses:84Used by:88
Symbol 86 GraphicUsed by:87
Symbol 87 MovieClipUses:86Used by:88
Symbol 88 MovieClipUses:85 87Used by:Timeline
Symbol 89 BitmapUsed by:90
Symbol 90 GraphicUses:89Used by:91
Symbol 91 MovieClipUses:90Used by:Timeline
Symbol 92 BitmapUsed by:93
Symbol 93 GraphicUses:92Used by:94 95
Symbol 94 MovieClipUses:93Used by:Timeline
Symbol 95 MovieClipUses:93Used by:Timeline
Symbol 96 BitmapUsed by:97
Symbol 97 GraphicUses:96Used by:98
Symbol 98 MovieClipUses:97Used by:Timeline
Symbol 99 GraphicUsed by:128
Symbol 100 GraphicUsed by:101
Symbol 101 MovieClipUses:100Used by:110
Symbol 102 GraphicUsed by:103
Symbol 103 MovieClipUses:102Used by:110 119 127
Symbol 104 GraphicUsed by:105
Symbol 105 MovieClipUses:104Used by:110 119
Symbol 106 GraphicUsed by:107
Symbol 107 MovieClipUses:106Used by:110
Symbol 108 GraphicUsed by:109
Symbol 109 MovieClipUses:108Used by:110 119
Symbol 110 MovieClipUses:101 103 105 107 109Used by:128
Symbol 111 GraphicUsed by:112
Symbol 112 MovieClipUses:111Used by:119
Symbol 113 GraphicUsed by:116
Symbol 114 GraphicUsed by:116 126
Symbol 115 GraphicUsed by:116
Symbol 116 MovieClipUses:113 114 115Used by:119
Symbol 117 GraphicUsed by:118
Symbol 118 MovieClipUses:117Used by:119 127
Symbol 119 MovieClipUses:103 105 112 116 118 109Used by:128
Symbol 120 GraphicUsed by:121
Symbol 121 MovieClipUses:120Used by:127
Symbol 122 GraphicUsed by:123
Symbol 123 MovieClipUses:122Used by:127
Symbol 124 GraphicUsed by:126
Symbol 125 GraphicUsed by:126
Symbol 126 MovieClipUses:124 114 125Used by:127
Symbol 127 MovieClipUses:118 121 123 103 126Used by:128
Symbol 128 MovieClip {Q_fla.avatar_29}Uses:99 110 119 127Used by:Timeline
Symbol 129 GraphicUsed by:130
Symbol 130 MovieClipUses:129Used by:Timeline
Symbol 131 GraphicUsed by:132
Symbol 132 MovieClipUses:131Used by:Timeline
Symbol 133 BitmapUsed by:134
Symbol 134 GraphicUses:133Used by:135
Symbol 135 MovieClipUses:134Used by:Timeline
Symbol 136 BitmapUsed by:137
Symbol 137 GraphicUses:136Used by:138
Symbol 138 MovieClipUses:137Used by:141  Timeline
Symbol 139 GraphicUsed by:141
Symbol 140 MovieClip {Q_fla.star_fade_49}Uses:3Used by:141
Symbol 141 MovieClip {Q_fla.cup_disappear_48}Uses:139 138 140Used by:Timeline
Symbol 142 TextUses:57Used by:145
Symbol 143 EditableTextUses:8Used by:144
Symbol 144 MovieClip {Q_fla.DynamicTextField_Big_Center_52}Uses:143Used by:145 147 149 151 152 154  Timeline
Symbol 145 MovieClip {Q_fla.timerMc_51}Uses:142 144Used by:166
Symbol 146 TextUses:57Used by:147
Symbol 147 MovieClip {Q_fla.scoreMc_53}Uses:146 144Used by:166
Symbol 148 TextUses:57Used by:149
Symbol 149 MovieClip {Q_fla.cupsMc_54}Uses:144 148Used by:166
Symbol 150 SoundUsed by:151
Symbol 151 MovieClip {Q_fla.fulltime_55}Uses:144 150Used by:166
Symbol 152 MovieClip {Q_fla.readyGo_56}Uses:144 61Used by:166
Symbol 153 SoundUsed by:154
Symbol 154 MovieClip {Q_fla.pointsUp_57}Uses:144 153Used by:166
Symbol 155 GraphicUsed by:156
Symbol 156 MovieClipUses:155Used by:165
Symbol 157 GraphicUsed by:158
Symbol 158 MovieClipUses:157Used by:160 162 164
Symbol 159 GraphicUsed by:160
Symbol 160 MovieClipUses:158 159Used by:165
Symbol 161 GraphicUsed by:162
Symbol 162 MovieClipUses:158 161Used by:165
Symbol 163 GraphicUsed by:164
Symbol 164 MovieClipUses:158 163Used by:165
Symbol 165 MovieClip {Q_fla.radar_58}Uses:156 160 162 164Used by:166
Symbol 166 MovieClip {Q_fla.GameOverlayComp_50}Uses:145 147 149 151 152 154 165Used by:Timeline
Symbol 167 SoundUsed by:169
Symbol 168 SoundUsed by:169
Symbol 169 MovieClip {Q_fla.GameSoundMc_64}Uses:167 168Used by:Timeline
Symbol 170 MovieClipUses:3Used by:171
Symbol 171 MovieClipUses:3 170Used by:Timeline
Symbol 172 TextUses:57Used by:Timeline
Symbol 173 TextUses:57Used by:Timeline
Symbol 174 GraphicUsed by:176
Symbol 175 TextUses:8Used by:176
Symbol 176 MovieClipUses:174 175Used by:Timeline
Symbol 177 GraphicUsed by:Timeline
Symbol 178 TextUses:8Used by:Timeline
Symbol 179 TextUses:57Used by:Timeline
Symbol 180 GraphicUsed by:181
Symbol 181 MovieClipUses:180Used by:Timeline
Symbol 182 GraphicUsed by:Timeline
Symbol 183 TextUses:8Used by:Timeline
Symbol 184 TextUses:57Used by:Timeline
Symbol 185 TextUses:57Used by:Timeline
Symbol 186 BitmapUsed by:187
Symbol 187 GraphicUses:186Used by:188
Symbol 188 MovieClipUses:187Used by:199
Symbol 189 TextUses:8Used by:199
Symbol 190 BitmapUsed by:191
Symbol 191 GraphicUses:190Used by:192
Symbol 192 MovieClipUses:191Used by:196
Symbol 193 BitmapUsed by:194
Symbol 194 GraphicUses:193Used by:195
Symbol 195 MovieClipUses:194Used by:196
Symbol 196 MovieClipUses:192 195Used by:199
Symbol 197 TextUses:8Used by:198
Symbol 198 MovieClipUses:197Used by:199
Symbol 199 MovieClip {Q_fla.Instructions_mc_69}Uses:188 189 196 15 12 6 198Used by:Timeline
Symbol 200 GraphicUsed by:Timeline

Instance Names

"mochiAdHold"Frame 1Symbol 18 MovieClip {Q_fla.adHold_5}
"transitionMc"Frame 1Symbol 25 MovieClip {Q_fla.transition_6}
"maxIntroMc"Frame 10Symbol 48 MovieClip {Q_fla.maxGameIntro_7}
"newGameBt"Frame 20Symbol 62 Button
"soundBt"Frame 20Symbol 67 MovieClip {Q_fla.soundBtn_17}
"moreBt"Frame 20Symbol 64 Button
"scoresBt"Frame 20Symbol 64 Button
"instructBt"Frame 20Symbol 64 Button
"maxLogo"Frame 20Symbol 80 MovieClip
"hold3D"Frame 30Symbol 83 MovieClip
"meezball"Frame 30Symbol 88 MovieClip
"surface"Frame 30Symbol 91 MovieClip
"shortSide"Frame 30Symbol 94 MovieClip
"longSide"Frame 30Symbol 95 MovieClip
"soccer"Frame 30Symbol 98 MovieClip
"avatar"Frame 30Symbol 128 MovieClip {Q_fla.avatar_29}
"ballShadow"Frame 30Symbol 130 MovieClip
"directionalTarget"Frame 30Symbol 132 MovieClip
"cupTexture"Frame 30Symbol 135 MovieClip
"flatCup"Frame 30Symbol 138 MovieClip
"cupAnimMc"Frame 30Symbol 141 MovieClip {Q_fla.cup_disappear_48}
"overlay"Frame 30Symbol 166 MovieClip {Q_fla.GameOverlayComp_50}
"maxLogo"Frame 30Symbol 80 MovieClip
"gameSoundMc"Frame 30Symbol 169 MovieClip {Q_fla.GameSoundMc_64}
"playBt"Frame 40Symbol 64 Button
"menuBt"Frame 40Symbol 64 Button
"textMc"Frame 40Symbol 144 MovieClip {Q_fla.DynamicTextField_Big_Center_52}
"submitBt"Frame 40Symbol 64 Button
"maxLogo"Frame 40Symbol 80 MovieClip
"playBt"Frame 50Symbol 64 Button
"menuBt"Frame 50Symbol 64 Button
"scoreHold"Frame 60Symbol 83 MovieClip
"flatCup"Symbol 141 MovieClip {Q_fla.cup_disappear_48} Frame 1Symbol 138 MovieClip
"dynamicText"Symbol 144 MovieClip {Q_fla.DynamicTextField_Big_Center_52} Frame 1Symbol 143 EditableText
"textMc"Symbol 145 MovieClip {Q_fla.timerMc_51} Frame 1Symbol 144 MovieClip {Q_fla.DynamicTextField_Big_Center_52}
"textMc"Symbol 147 MovieClip {Q_fla.scoreMc_53} Frame 1Symbol 144 MovieClip {Q_fla.DynamicTextField_Big_Center_52}
"textMc"Symbol 149 MovieClip {Q_fla.cupsMc_54} Frame 1Symbol 144 MovieClip {Q_fla.DynamicTextField_Big_Center_52}
"textMc"Symbol 151 MovieClip {Q_fla.fulltime_55} Frame 2Symbol 144 MovieClip {Q_fla.DynamicTextField_Big_Center_52}
"textMc"Symbol 152 MovieClip {Q_fla.readyGo_56} Frame 2Symbol 144 MovieClip {Q_fla.DynamicTextField_Big_Center_52}
"textMc"Symbol 154 MovieClip {Q_fla.pointsUp_57} Frame 2Symbol 144 MovieClip {Q_fla.DynamicTextField_Big_Center_52}
"feez"Symbol 165 MovieClip {Q_fla.radar_58} Frame 1Symbol 160 MovieClip
"soccer"Symbol 165 MovieClip {Q_fla.radar_58} Frame 1Symbol 162 MovieClip
"star"Symbol 165 MovieClip {Q_fla.radar_58} Frame 1Symbol 164 MovieClip
"timerMc"Symbol 166 MovieClip {Q_fla.GameOverlayComp_50} Frame 1Symbol 145 MovieClip {Q_fla.timerMc_51}
"scoreMc"Symbol 166 MovieClip {Q_fla.GameOverlayComp_50} Frame 1Symbol 147 MovieClip {Q_fla.scoreMc_53}
"cupsMc"Symbol 166 MovieClip {Q_fla.GameOverlayComp_50} Frame 1Symbol 149 MovieClip {Q_fla.cupsMc_54}
"fulltime"Symbol 166 MovieClip {Q_fla.GameOverlayComp_50} Frame 1Symbol 151 MovieClip {Q_fla.fulltime_55}
"readyGo"Symbol 166 MovieClip {Q_fla.GameOverlayComp_50} Frame 1Symbol 152 MovieClip {Q_fla.readyGo_56}
"pointsUp"Symbol 166 MovieClip {Q_fla.GameOverlayComp_50} Frame 1Symbol 154 MovieClip {Q_fla.pointsUp_57}
"radar"Symbol 166 MovieClip {Q_fla.GameOverlayComp_50} Frame 1Symbol 165 MovieClip {Q_fla.radar_58}

Special Tags

FileAttributes (69)Timeline Frame 1Access local files only, Metadata not present, AS3.
Protect (24)Timeline Frame 10 bytes ""

Labels

"loading"Frame 1
"maxIntro"Frame 10
"mainMenu"Frame 20
"level1"Frame 30
"gameOver"Frame 40
"instructions"Frame 50
"leaderboard"Frame 60
"submit"Frame 70
"on"Symbol 67 MovieClip {Q_fla.soundBtn_17} Frame 1
"off"Symbol 67 MovieClip {Q_fla.soundBtn_17} Frame 5
"run-back"Symbol 128 MovieClip {Q_fla.avatar_29} Frame 1
"run-front"Symbol 128 MovieClip {Q_fla.avatar_29} Frame 10
"run-left"Symbol 128 MovieClip {Q_fla.avatar_29} Frame 20
"run-right"Symbol 128 MovieClip {Q_fla.avatar_29} Frame 30
"normal"Symbol 169 MovieClip {Q_fla.GameSoundMc_64} Frame 2
"fast"Symbol 169 MovieClip {Q_fla.GameSoundMc_64} Frame 16
"restart"Symbol 199 MovieClip {Q_fla.Instructions_mc_69} Frame 30




http://swfchan.com/47/233142/info.shtml
Created: 6/3 -2020 03:16:09 Last modified: 6/3 -2020 03:16:09 Server time: 09/05 -2024 03:21:19